improved startup speed by optimizing parsing of parameter values
authorHolger Schemel <info@artsoft.org>
Tue, 15 Sep 2020 09:07:46 +0000 (11:07 +0200)
committerHolger Schemel <info@artsoft.org>
Tue, 15 Sep 2020 09:17:45 +0000 (11:17 +0200)
Commit bd5cd062 (that introduced event actions for global animations)
also added a nasty performance bottleneck due to complexity of parsing
event action parameters, which slowed down program startup phase quite
significantly. However, in most cases these parameters just stay at
their default values, so checking for that default value first results
in massively speeding up this part of the startup phase.

src/files.c

index a78b46acd7f1b2e034884c5b407514d1d2d7edc5..49813391c63e0e7a733a23447cb5e09862ee8eb2 100644 (file)
@@ -10246,6 +10246,10 @@ static int get_anim_parameter_values(char *s)
 
 static int get_anim_action_parameter_value(char *token)
 {
+  // check most common default case first to massively speed things up
+  if (strEqual(token, ARG_UNDEFINED))
+    return ANIM_EVENT_ACTION_NONE;
+
   int result = getImageIDFromToken(token);
 
   if (result == -1)