Быстродействие циклов. Вопросы.
Добрый день.
Не так давно наткнулся на http://www.jstoolbox.com/2008/03/25/...zaciya-ciklov/, посвященную оптимизации циклов в JS. Стало интересно проверить на деле какой же из циклов реально быстрее. В результате был написан такой код http://pastebin.com/9tfJVzbE, в котором Я использовал разную запись циклов (полная против краткой) и разный обход массива (i++ или i--). В первом варианте скрипта (http://pastebin.com/7iW79Za7) массив задавался в каждой функции. Сейчас Я его вынес в глобальную область и дал обычный вывод данных на страницу вместо консоли. И вот какие результаты Я получил: Полная запись с len - это for(var i= 0, len = tArray.length; i<len; i++) FF 16 Код:
for полная запись. Перебор по возрастающей 36 ms Chrome 22 Код:
for полная запись. Перебор по возрастающей 31 ms Код:
for полная запись. Перебор по возрастающей 113 ms
В JS новичок =( |
оптимизировать циклы вообще нет смысла. пишите так, как хочется.
оптимизировать нужно в первую очередь алгоритм. прирост проиводительности из-за замены формы циклы почти не заметен. хотя ... "копейка рубль бережёт". Цитата:
Цитата:
мерять лучше на jsperf.com ... там есть уже с десяток, наверное - если на с сотню - подобных тестов на скорость циклов. |
Цитата:
|
Цитата:
А желание проверить скорость работы циклов вылилось, собственно, из задачи по перестановке элементов массива в обратном порядке. Там Я сравнивал метод с переменной, с дополнительным массивом и array.reverse(); Reverse, кстати оказался самым медленным во всех браузерах кроме IE. Оптимизация и производительность носили учебный характер. В настоящем приложении данных немного, чтобы их количество как-то повлияло на скорость. Цитата:
Цитата:
Цитата:
В общем... особенности движков. Никакой мистики. Всем спасибо за ответы, темку можно удалять. Приношу извинения за беспокойство. |
Цитата:
Я не разбирался, поэтому точный ответ с расследованием и прикреплением исходников V8 дать не могу. Хотя, Клиффорд, похоже, занимался этим ... гм, "ЭТИМ". http://habrahabr.ru/post/154537/ Я, конечно, люблю полазить в дебрях V8 и двига FireFox (забыл, как его ...), но только в экстренных и неразрешимых случаях. Цитата:
Цитата:
|
melky,
SpiderMonkey. Arconas, у вас там замыкания спрошь и рядом, конечно будут результаты разные, тут уже нужно смотреть на то, как движки оптимизируют lookup и всё такое. сделайте всё отдельно и в одной функции на каждый тест, тогда можно говорить о результатах. И да, jsperf лучше, просто потому, что лучше. Там проверяется не только врея, но и другие нюансы, в которые я даже не углублялся, но можно почитать документацию. |
Незаметил первый вариант:
Цитата:
|
Цитата:
|
Цитата:
|
trikadin,
Это от куда такая инфа то? Основной вроде SpiderMonkey. А IonMonkey и JugerMonkey это просто надможества, грубо говоря. |
Часовой пояс GMT +3, время: 04:01. |