Dieser Code:Warum dieser Code bei unterschiedlichen Werten unterschiedlich verhält
var i = 10000000000;
do {
i--;
}
while (i !== 0);
//Result: 38 second.
var i = 10000000000;
do {}
while (i-- !== 0);
//Result: 27 second.
//(same result with while (i--)
var i = 10000000000;
do {}
while (i-- | 0);
//Result: 13.5 second.
Die Frage ist: Warum diese Version die gleiche Zeit für kleineren Wert von i bekommen? Wenn ich eine einzelne Null von i abschneide; Alle Versionen benötigen 2,2 Sekunden. (getestet auch nach JIT-Optimierungen - nur in V8)
Es erscheint logisch, dass die dritte Version immer schneller sein sollte, aber nur für sehr hohe Werte schneller ist.
Es ist nur eine Kuriosität ... nicht wirklich wichtig.
Ich habe versucht, diese in Jsperf zu setzen, aber es neigt dazu, meine Browser http://jsperf.com/do-while-speed-test zum Absturz zu bringen. Denken Sie daran, dass verschiedene Javascript-Engines zu unterschiedlichen Ergebnissen führen, da sie verschiedene Dinge priorisieren. Es kann auf etwas so Einfaches wie die zugrunde liegende OS Art und Weise der Handhabung von Zahlen kommen. (UPDATE: Tests haben gelaufen, aber JSperf gibt einen Fehler bezüglich der fehlenden 'name' Eigenschaft aus. Keine Ahnung, warum das passiert ist) – somethinghere
Die letzte ist am schnellsten, weil sie nur 1410065408 mal iteriert und tatsächlich 1/3 der Geschwindigkeit der Sekunde ist Version, dh 104449290 pro Sekunde vs 370370370 pro Sekunde –
Gute Beobachtung. Habe das nicht beobachtet. –