Jeg, og sikkert også du, har hundrede vis af gange skrevet en JavaScript for-next løkke på følgende måde:
for (var i=0; i<arr.length; i++)
{
//Ya-di-ya
}
Var du klar over at man kan optimerer den løkke med en faktor 1:8 ved at lave en minimal ændring af koden?
Det viser sig nemlig, at løkken bruger en del kræfter på at udregne arr.length i hvert gennemløb. Hvis man der imod checker mod en variabel med værdin, kører det hele langt mere gnidningsløst. Se følgende test:
var array = new Array(100000);
var loop1 = function() {
var ctr = 0;
for (var i = 0; i < array.length; i++) {
ctr++;
}
return ctr;
}
var loop2 = function() {
var ctr = 0;
var l = array.length;
for (var i = 0; i < l; i++) {
ctr++;
}
return ctr;
}
window.onload = function() {
loop1();
loop2();
}
Et array med 100.000 elementer loopes igennem. Loop1 checker mod array.length og loop2 mod variablen l.
Og resultatet:
Loop2 kører over 4 gange hurtigere! Gevinsten bliver større, jo flere elementer der er i array’et.
Somme tider er det i detaljen, at de store besparelser ligger gemt.
Code on…