ten kod:Dlaczego ten kod zachowuje się różni w różnych wartościach
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.
Pytanie brzmi: dlaczego te wersja uzyskać ten sam czas dla mniejszych wartości I? Gdybym wyciął jedno zero od i; wszystkie wersje wymagają 2,2 sekundy. (testowane nawet po optymalizacji JIT - tylko w wersji V8)
Wydaje się logiczne, że trzecia wersja powinna być zawsze szybsza, ale jest szybsza tylko dla bardzo wysokich wartości.
To tylko ciekawość ... nie jest tak naprawdę ważna.
Próbowałem umieścić je w jsperf, ale ma to tendencję do zawieszania się w moich przeglądarkach http://jsperf.com/do-while-speed-test. Należy pamiętać, że różne silniki javascript będą skutkowały różnymi rezultatami, ponieważ priorytetowo traktują różne rzeczy. Może sprowadzać się do czegoś tak prostego, jak sposób obsługi liczb przez system operacyjny. (AKTUALIZACJA: testy zostały uruchomione, ale JSperf rzuca błąd o braku swojej własnej własności 'name' .Nie ma pojęcia, dlaczego tak się stało) – somethinghere
Ostatni jest najszybszy, ponieważ tylko iteruje 1410065408 razy i jest faktycznie 1/3 szybkości drugiego wersja, tj. 104449290 na sekundę vs 370370370 na sekundę –
Dobra obserwacja. Nie zauważyłem tego. –