Azért dícséretes, hogy ennyire kinőtte magát, így nem a javascript optimalizációs trükkökjeiről, hanem a jQuery optimalizációs trükkjeiről beszélünk.
Üdv:
Gábor
Ez annyira jó, minden optimalizációval foglalkozó cikkben elmondják, hogy kerüljük az each használatát. Mert fúj. Itt azt olvashatjuk:
Actually, each is a pretty awesome utility function. The problem is that there is only one true reason to use each, and that is when a closure is needed for each item. If you are just looping through an array, then the callback function gets triggered on every iteration. So using an array of 25 items, the callback gets triggered 25 times. That can really add up depending on the size of your array.
Röviden: egyetlen ok van, hogy az each-et használjuk, ha szükségünk van a closure használatára minden elem feldolgozásnál. Mert ha például 25 eleme van a tömbbnek, 25-ször fog meghívódni a callback függvény.
Vegyük a következő példát:
var i = arr.length; // 10.000
while(i--) sum += arr[i];
$.each( arr, function( i , num ) { sum += num });
A leggyorsabb loop-pal 2 ms, az each-csel 13 ms. Ha 25 eleme lenne a tömbnek, az each 0,03 ms időbe tellne. Atyavilág, micsoda pazarlás!
Nem vitatom, ha százezres méretű tömbökkel számolunk, nagyon oda kell figyelni, milyen eszközhöz nyúlunk, de néhány (tized) ms miatt ne fessük az ördögöt a falra!
(Tudom, a cikk is említi, hogy az ötletei általában csak kis mértékben javítják a hatékonyságot, és sértik a jQuery "Write Less, Do More" elvét. Ahogy ő is említi, meg kell találni az egyensúlyt az optimalizáltság és az elegáns kódolás között.)
egyetértek. Tudom, hogy nem szép ezt tenni mint programozó, de én ilyenkor meg szoktam NÉZNI az oldalt és ha nem ÉRZEM (ez mekkora valid speed testing :-)) azt hogy annyit kell várni, akkor inkább használom az each-t :-)
Magyarul
Azért dícséretes, hogy ennyire kinőtte magát, így nem a javascript optimalizációs trükkökjeiről, hanem a jQuery optimalizációs trükkjeiről beszélünk.
Üdv:
Gábor
each is evil
Röviden: egyetlen ok van, hogy az each-et használjuk, ha szükségünk van a closure használatára minden elem feldolgozásnál. Mert ha például 25 eleme van a tömbbnek, 25-ször fog meghívódni a callback függvény.
Vegyük a következő példát:
Nem vitatom, ha százezres méretű tömbökkel számolunk, nagyon oda kell figyelni, milyen eszközhöz nyúlunk, de néhány (tized) ms miatt ne fessük az ördögöt a falra!
(Tudom, a cikk is említi, hogy az ötletei általában csak kis mértékben javítják a hatékonyságot, és sértik a jQuery "Write Less, Do More" elvét. Ahogy ő is említi, meg kell találni az egyensúlyt az optimalizáltság és az elegáns kódolás között.)
Teljesen