Performance improvements: move out from the loop the strlen declaration. 27/13227/2
Sylvestre Ledru [Tue, 26 Nov 2013 10:32:06 +0000 (11:32 +0100)]
It was called for every step of the loop.

Change-Id: I77123006c5e2358ffe00f59fc136e2b75f3ae180

13 files changed:
scilab/modules/core/sci_gateway/c/sci_newfun.c
scilab/modules/fftw/sci_gateway/c/sci_get_fftw_wisdom.c
scilab/modules/fileio/sci_gateway/c/sci_mfprintf.c
scilab/modules/graphics/src/c/scitokenize.c
scilab/modules/output_stream/sci_gateway/c/sci_mprintf.c
scilab/modules/output_stream/src/c/msgs.c
scilab/modules/string/sci_gateway/c/sci_strcat.c
scilab/modules/string/src/c/convstr.c
scilab/modules/string/src/c/stringToComplex.c
scilab/modules/string/src/c/stripblanks.c
scilab/modules/tclsci/src/c/InitTclTk.c
scilab/modules/windows_tools/src/c/scilab_windows/ConvertSlash.c
scilab/modules/windows_tools/src/c/scilab_windows/FilesAssociations.c

index d7164d9..6184216 100644 (file)
@@ -199,7 +199,8 @@ static BOOL Is_a_correct_function_name(char *functionname)
             {
                 return FALSE;
             }
-            for (i = 1; i < (int)strlen(functionname); i++)
+            int len_functionname = (int)strlen(functionname);
+            for (i = 1; i < len_functionname; i++)
             {
                 /*
                 ???? = 3
index f0140fb..f10ea2a 100644 (file)
@@ -50,7 +50,8 @@ int sci_get_fftw_wisdom(char *fname, unsigned long fname_len)
     j = 0;
     if (Str)
     {
-        for (i = 0; i < (int)strlen(Str); i++)
+        int lenStr = (int)strlen(Str);
+        for (i = 0; i < lenStr; i++)
         {
             if (Str[i] == '\n')
             {
index 5e92be6..f3095d8 100644 (file)
@@ -32,6 +32,7 @@ int sci_mfprintf(char *fname, unsigned long fname_len)
     int l2 = 0, m2 = 0, n2 = 0;
     int lcount = 0, rval = 0, mx = 0, mk = 0, nk = 0, k = 0;
     char *ptrFormat = NULL;
+    int lenptrFormat = 0;
     int i = 0;
     int NumberPercent = 0;
     int param1 = 0;
@@ -111,7 +112,8 @@ int sci_mfprintf(char *fname, unsigned long fname_len)
         return 0;
     }
 
-    for (i = 0; i < (int)strlen(ptrFormat); i++)
+    lenptrFormat = (int)strlen(ptrFormat);
+    for (i = 0; i < lenptrFormat; i++)
     {
         if (ptrFormat[i] == '%')
         {
index 0cfed57..4cfd3ba 100644 (file)
@@ -25,9 +25,10 @@ int scitokenize(char * legend, char *** Strptr, int *n)
     int prevIndex = 0;
     int stringLength = 0, j = 0;
     char **Str = NULL;
+    int lenlegend = (int)strlen(legend);
 
     /* first get the number of tokens */
-    for (i = 0; i < (int)strlen(legend); i++)
+    for (i = 0; i < lenlegend; i++)
     {
         if (legend[i] == '@')
         {
index 3eb7a28..57bb85c 100644 (file)
@@ -22,6 +22,7 @@ int sci_mprintf(char *fname, unsigned long fname_len)
     static int l1, m1, n1, lcount, rval, k ;
 
     char *ptrFormat   = NULL;
+    int lenptrFormat  = 0;
     int i             = 0;
     int NumberPercent = 0;
     int NumberCols    = 0;
@@ -46,8 +47,8 @@ int sci_mprintf(char *fname, unsigned long fname_len)
     GetRhsVar(1, STRING_DATATYPE, &m1, &n1, &l1);
 
     ptrFormat = cstk(l1);
-
-    for ( i = 0; i < (int)strlen(ptrFormat); i++)
+    lenptrFormat = (int)strlen(ptrFormat);
+    for ( i = 0; i < lenptrFormat; i++)
     {
         if (ptrFormat[i] == '%')
         {
index 7a8bddd..f705963 100644 (file)
@@ -1320,10 +1320,11 @@ static int msg_101(int *n, int *ierr)
     int one = 1;
     int i = 0;
     char line[bsiz];
-
+    int len_line = 0;
     C2F(cvname)(&C2F(recu).ids[(C2F(recu).pt + 1) * nsiz - nsiz], line, &one, (long int)nlgh);
 
-    for (i = 0; i < (int)strlen(line); i++)
+    len_line = (int)strlen(line);
+    for (i = 0; i < len_line; i++)
     {
         if (line[i] == ' ')
         {
index 1b44d29..4808c84 100644 (file)
@@ -151,16 +151,19 @@ static int sci_strcat_three_rhs(char *fname)
             for (i = 0; i < mn; i++)
             {
                 int j = 0;
-
-                for (j = 0; j < (int)strlen(Input_String_One[i]); j++)
+                int len_Input_String_One = (int)strlen(Input_String_One[i]);
+                for (j = 0; j < len_Input_String_One; j++)
                 {
                     *cstk(l3 + k++) = Input_String_One[i][j];
                 }
                 if (i != mn - 1)
-                    for (j = 0; j < (int)strlen(Input_String_Two); j++)
+                {
+                    int len_Input_String_Two = (int)strlen(Input_String_Two);
+                    for (j = 0; j < len_Input_String_Two; j++)
                     {
                         *cstk(l3 + k++) = Input_String_Two[j];
                     }
+                }
             }
             freeArrayOfString(Input_String_One, mn);
             LhsVar(1) = Rhs + 1;
index a5b8895..714a93e 100644 (file)
@@ -25,7 +25,8 @@ void convstr(char **Input_Matrix, char **Output_Matrix, char typ, int mn)
     for (x = 0 ; x < mn; x++)
     {
         int y = 0;
-        for (y = 0; y < (int)strlen(Input_Matrix[x]); y++)
+        int len_Input_Matrix = (int)strlen(Input_Matrix[x]);
+        for (y = 0; y < len_Input_Matrix; y++)
         {
             /*To traverse every string in the string matrix */
             if ( (typ == UPPER) || (typ == UPPER_B) )
index ebb1803..d2a9cf3 100644 (file)
@@ -339,13 +339,14 @@ static stringToComplexError ParseComplexValue(const char *tx, BOOL bConvertByNAN
         }
         else if (inum_string[1] == 'i' || inum_string[1] == 'j') // The imaginary part looks like "%i*a". For instance if string() has been used
         {
-            for (i = 1; i < strlen(inum_string); ++i)
+            int len_inum_string = strlen(inum_string);
+            for (i = 1; i < len_inum_string; ++i)
             {
                 inum_string[i] = inum_string[i + 1];    // Removing the "i"
             }
             if (inum_string[1] == '*')
             {
-                for (i = 1; i < strlen(inum_string); ++i)
+                for (i = 1; i < len_inum_string; ++i)
                 {
                     inum_string[i] = inum_string[i + 1];    // Removing the "*"
                 }
index 3645e0d..56181d1 100644 (file)
@@ -90,7 +90,8 @@ void stripblanks(char **InputStrings, char **OutputStrings, int InputStringsDim,
         /* search character ' ' or TAB from beginning of the string */
         if (lengthInput_Two > 0)
         {
-            for (i = 0; i < (int)strlen(InputStrings[x]); i++)
+            int len_InputStrings = (int)strlen(InputStrings[x]);
+            for (i = 0; i < len_InputStrings; i++)
             {
                 if (withTAB)
                 {
index 8b4b9d5..0945ff6 100644 (file)
@@ -210,7 +210,7 @@ static void *DaemonOpenTCLsci(void* in)
     // TCL command. This causes any TCL application to start
     // and run as if it's in the main program thread.
     startTclLoop();
-    return(0);
+    return (0);
 
 }
 /*--------------------------------------------------------------------------*/
@@ -255,13 +255,14 @@ static char *GetSciPath(void)
     char *PathUnix = NULL;
     char *SciPathTmp = NULL;
     int i = 0;
+    int lenPathUnix = 0;
 
     SciPathTmp = getSCIpath();
 
     if (SciPathTmp)
     {
         PathUnix = strdup(SciPathTmp);
-        for (i = 0; i < (int)strlen(PathUnix); i++)
+        for (i = 0; i < lenPathUnix; i++)
         {
             if (PathUnix[i] == '\\')
             {
index 563220b..916c4fd 100644 (file)
@@ -35,8 +35,11 @@ static BOOL convertSlash(char *path_in, char *path_out, BOOL slashToAntislash)
     if ( (path_in) && (path_out) )
     {
         int i = 0;
+        int len_path_out = 0;
         strcpy(path_out, path_in);
-        for (i = 0; i < (int)strlen(path_out); i++)
+        len_path_out = (int)strlen(path_out)
+
+                       for (i = 0; i < len_path_out; i++)
         {
             if ( slashToAntislash )
             {
@@ -58,7 +61,7 @@ static BOOL convertSlash(char *path_in, char *path_out, BOOL slashToAntislash)
     }
     else
     {
-        bOK = FALSE;
+        return FALSE;
     }
 
     return bOK;
index ca336a1..e903fd5 100644 (file)
@@ -302,7 +302,8 @@ static void ExtensionFileIntoLowerCase(char *fichier)
 static void ReplaceSlash(char *pathout, char *pathin)
 {
     int i = 0;
-    for (i = 0; i < (int)strlen(pathin); i++)
+    int len_pathin = (int)strlen(pathin);
+    for (i = 0; i < len_pathin; i++)
     {
         if (pathin[i] == '\\')
         {