Недавно я пришел к другому способу петли, хотя массив в Javascript.
Я использовал для записи петли что-то вроде этого:
for (var len = 0; len < testData.length; len++) {
total = total + testData[len];
}
Я прочитал код, который сделал это следующим образом:
for (var len = 0; testData[len]; len++) {
total = total + testData[len];
}
Мне было интересно, как они будут работать, поэтому я нашел jsPerf, чтобы узнать это. Результаты довольно изумительны. Я ожидал, что второй метод будет немного быстрее, чем первый, но на самом деле намного, намного быстрее.
Есть ли здесь нисходящая сторона? Или это лучший способ перебрать элементы списка.
Update:
Состояние серого приближается, и Diode указал мне на простой недостаток в тестовом файле, который, по-видимому, был быстрее.
После исправления ошибки это самый быстрый:
var datalen = testData.length;
for (var len = 0; len <datalen; len++) {
total = total + testData[len];
}
Обновление 2:
После тестирования в некоторых других браузерах этот тестовый тест снова принимает другое направление. Только в Chrome и Opera обычный для цикла самый быстрый. В других других браузерах путь Шмиддти только немного быстрее.
var i = testData.length, sum=0;
while (i--){
sum += testData[i];
}