What's the Fastest Way to Code a Loop in JavaScript?
Kimerítő elemzés a natív és HTML gyűjtemény feletti loopolásról
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
kis összefoglalás
HTML collection: egy HTML collection egy property-jének eléresekor egy live query történik, ezért lényegesen lassabb, mint ha csak egy sima tömböt babrálnánk. Ezért adott esetben (ha több műveletet is szeretnénk végezni az elemekkel) az is megéri, hogy egyszer végigmegyünk a HTML collectionön, és az elemeket átpakoljuk egy tömbbe, majd ezen babrálunk.
valami.length: érdemes ezt kirakni egy lokális változóba, mert ennek a lookupja általában gyorsabb, mint a property lookup. Ez az előbbi pont miatt fokozottan érdekes HTML collectionök esetén.
i++ helyett i--: érdemes a ciklust átfogalmaznunk, és fordítva végig menni kollekción (
for (var i = foo.length; i--; )
), mert a nullával való összehasonlítás gyorsabb.for in ciklus: lehetőleg kerüljük a használatát, ha tudjuk, hogy milyen kulcsokról van szó, akkor érdemes ezeket felvenni egy segédtömbbe, és ezen iterálni sima for ciklussal.
Duff's Device: ezt a cikk nem taglalja, de nagy tömbök esetén gyorsabb eredményt lehet vele elérni, mint a sime for ciklus. Az optimálisnak talált megoldás:
well said