Foreach vs. ForNext
Posted: Fri Aug 10, 2018 5:59 pm
i made a test to see how fast "foreach" works compared to "For...next" in conjunction with strings. The attached app removes char by char all leading zeros from a string.
the initial string is:
c1:= replicate ( "0" , 4500000 ) + "500205"
ok, not a real world string size , but it´s almost impossible to detect the elapsed time without using such a big number. Overall the performance of the good old "for...next" isn´t that bad - if Substr2()/Substr3() is used instead of Substr().
The results on my win8.1 64Bit laptop are:
size of string: 4500006
*500205* 0,0299999999988358 secs FOREACH loop
*500205* 0,0400000000081491 secs STRING loop
*500205* 0,119999999995343 secs FORNEXT loop Substr2() and Substr3()
*500205* 0,970000000001164 secs FORNEXT loop Substr()
Note: To be able to compile the code in <vo> and <core>, i´m using as a workaround c'0' instead of '0' to compare a char.
regards
Karl-Heinz
the initial string is:
c1:= replicate ( "0" , 4500000 ) + "500205"
ok, not a real world string size , but it´s almost impossible to detect the elapsed time without using such a big number. Overall the performance of the good old "for...next" isn´t that bad - if Substr2()/Substr3() is used instead of Substr().
The results on my win8.1 64Bit laptop are:
size of string: 4500006
*500205* 0,0299999999988358 secs FOREACH loop
*500205* 0,0400000000081491 secs STRING loop
*500205* 0,119999999995343 secs FORNEXT loop Substr2() and Substr3()
*500205* 0,970000000001164 secs FORNEXT loop Substr()
Note: To be able to compile the code in <vo> and <core>, i´m using as a workaround c'0' instead of '0' to compare a char.
regards
Karl-Heinz