Der er (næsten) altid mulighed for at optimere, men personligt ville jeg nok ikke kaste mig ud i Duff's Device i situationer som denne:
http://en.wikipedia.org/wiki/Duff%27s_deviceFaktisk tror jeg, din kode bliver endnu hurtigere ved at nøjes med (men det er utestet):
while(--lng){
Når
lng bliver
-1 (= false), vil while-betingelsen ikke længere være opfyldt, og løkken stopper.
Jeg bruger sjældent selv baglæns for-/while-loops til småting, men lægger altid flest mulige opslag udenfor løkken - uagtet, at det er et brud på mine principper. Koden skal dog ikke være ret stor, før jeg optimerer mest muligt.
Problemet omkring JS er, at de aller færreste JavaScriptere er programmører, som har viden om - eller bare fornemmelse for - hvad der sker i kodelagene under JS-laget. Indlæringskurven er meget flad, og det gør, at alle mulige har haft deres ukyndige hænder dybt begravet i mange af de mest populære JS-libraries.
Som du ved, er jeg mildt sagt ikke glad for libraries som jQuery - og det skyldes netop, at hele kernen er én lang gang dårlig optimeret kode. Som eksempel bruges (og genbruges)
ARRAY.push en masse steder. Jeg har lige testet, og push er stadig langsom i de fleste browsere (ganske som ventet er forskellen dog mindst i Safari).
Også jQuery's
$.each og
jQuery.each bruges et hav af gange internt - på trods af, at de performer ad H til! Afhængig af browser performer
$.each således 2-5 gange dårligere end en helt almindelig
for/in løkke. Metoderne bruges næsten ligemeget, hvad man foretager sig med lib'et, hvorved den dårlige performance multipliceres op mange gange. Det mærkes meget tydeligt ved lidt større applikationer.
Og så har vi endda kun talt om et par enkelte af de mange ting, der har indflydelse på performance af JS-kode. I virkeligheden er der bunker at tage fat på *o)