Цитата:
|
Riim, хз как ты тестишь. Вот тут у меня в хроме forEach в 10 раз медленней for:
http://jsperf.com/for-vs-foreach/132 |
Цитата:
var i = 500000, arr = []; while (i--) { arr.push(i); } var sum = 0, st = Date.now(); arr.forEach(function(num) { sum += num; }); console.log(Date.now() - st); sum = 0; st = Date.now(); function add(num) { sum += num; } arr.forEach(add); console.log(Date.now() - st); sum = 0; st = Date.now(); for (var j = 0, l = arr.length; j < l; j++) { sum += arr[j]; } console.log(Date.now() - st); sum = 0; st = Date.now(); for (var j = 0; j < arr.length; j++) { sum += arr[j]; } console.log(Date.now() - st); результат в хроме: 736 85 2496 2608 в ff: 657 590 871 913 пробовал переставлять тесты местами, пробовал отдельно генерить массив и далее отдельно запускать каждый тест. Проверь, мож я где затупил жестко. jsperf выдает результат схожий с твоим, странно как-то. |
ну вот, если запускать не из консоли, результат меняется, обидно :( , кажись придется иногда обычные циклы писать.
|
Цитата:
|
Цитата:
|
Цитата:
Кошерный функциональный стиль со скоростью циклов + прозрачная работа с LocalStorage/IndexedDB Сравнения: https://github.com/kobezzza/Collecti...aster/profiler |
Цитата:
|
kobezzza,
то что вы пишите я совсем непонимаю 98%, надеюсь на озарение ))), но немогли бы вы обьяснить, если можно что значит это: Цитата:
|
Цитата:
Чтобы запустить нужно склонить к себе репозитарий: git clone git://github.com/kobezzza/Collection.git А затем запускать .html файлики, например: forEach.html *** Сама Collection - это микролиба которая предоставляет унивесальный итераторный API для любых типов данных и работает как правило значительно быстрее нативных методов, т.к. основана на кодогенерации циклов в real-time с кучей оптимизаций. http://javascript.ru/forum/project/4...tml#post295370 Пример: сравнение forEach в хроме (время в мс): *** Циклы for (i = 0; i < length; i++) 99 for (i = length; i--; ) 78 for (i = 0; i < length; i++) с функцией 81 for (i = 0; i < length; i++) с функцией в Function 86 for (i = -1; (i += 1) < length; ) 83 *** Итераторы Array.prototype.forEach 348 jQuery.each 487 Underscore.each 345 *** Collection $C().forEach 131 |
Часовой пояс GMT +3, время: 06:48. |