Stukje achtergrond

EGL is een 4GL taal die wordt gebruikt in IBM's Rational Business Developer.
EGL wordt vertaalt naar javascript (front-end), java of cobol (back-end)


Case

Vaak zie je de volgende code:

for (i int from 1 to lijst.getSize())
// doe iets
end

Bij Java generatie maar ook naar javascript kun je het beste eerst het
bepalen van de lengte van de lijst in een variabele zetten. Met het bepalen in de loop
gaat ie elke keer de lengte bepalen per iteratie.

Beter zo:

lengteLijst int = lijst.getSize();
for (i int from 1 to lengteLijst)
// doe iets
end

Test

Java (server kant)
1000 x 1000 x string zetten in een array
10000 x 1000 x string zetten in een array
100000 x 1000 x string zetten in een array

JavaScript (web pagina)
100 x 100 x string zetten in een array
1000 x 100 x string zetten in een array
10000 x 100 x string zetten in een array

Elke meeting is een gemiddelde van 5 testresulataten.

Resulaat

Lengte bepalen in de loop vs buiten de loop:

Java

Run In loop Buiten loop
1000 24 ms 20 ms
10000 174 ms 151 ms
100000 2400 ms 1800 ms

JavaScript

Run In loop Buiten loop
100 72 ms 61ms
1000 820 ms 600 ms
10000 5535 ms 5019 ms

 

Conclusie

Dit is maar een klein testje. Het geeft wel een indicatie. Mijn advies is om de lengte van een array altijd buiten de loop te bepalen.
Het kan sowieso geen kwaad. Met complexe en geneste loops denk ik dat er winst te behalen is. Bij kleine array's zal weinig te merken zijn kwa performance.


Bronnen

https://stackoverflow.com/questions/2383422/java-for-loop-performance-question
https://stackoverflow.com/questions/13645890/javascript-for-in-vs-for-loop-performance