Javascript: прямой цикл, обратный цикл…

Jun 03, 2010 21:52


Прочитал, что цикл вида for(var j=testedArr.length; j--;){…} выполняется быстрее цикла вида for(var j=0; j «для большинства реализаций Javascript». Собственно, это хорошо известно. Сейчас я просто решил проверить.

Так вот, это действительно верно для всех браузеров, а в особенности - IE 8 (оный, между прочим, в своей обычной хамской манере вынудил ( Read more... )

программирование, chrome, ecmascript, ie

Leave a comment

Comments 19

(The comment has been removed)

torbasow June 4 2010, 05:19:47 UTC
В этом и разница. Вопросы в том, почему «Хрому» пофиг (а если ему пофиг, то не станет ли со временем пофиг и остальным браузерам?) и не слишком ли затуманивает смысл цикла то, что инкрементация впихнута в терминальное условие, а само оно проверяется через неявное преобразование типов (0 → FALSE).

Reply

Хром anonymous June 4 2010, 14:05:06 UTC
Хром использует для рендеринга webkit, а для js - V8 движок, который оптимизирует и преобразует js команды "виртуальной машины".
Подробней, насчет оптимизации:
http://code.google.com/intl/ru-RU/closure/compiler/

Reply

Re: Хром torbasow June 8 2010, 07:29:08 UTC
Оптимизатор по ссылке в моём коде ничего особенно не меняет: прямой цикл остаётся прямым, а обратный - обратным. Разве что при компиляции что-то меняется.

Reply


А если так? anonymous June 4 2010, 17:21:49 UTC
А если так?
var l = testedArr.length;
for(var j=0; j

Reply

Re: А если так? anonymous June 5 2010, 08:52:44 UTC
А еще лучше так
for(var j=0, l = testedArr.length; j

Reply

Re: А если так? torbasow June 8 2010, 07:56:16 UTC
Медленнее. Да ещё и лишняя переменная.

Reply

Re: А если так? anonymous June 5 2010, 16:46:39 UTC
j

Reply


mr_aleph June 5 2010, 08:38:07 UTC
>> Дюже странно сие, а на порядок большее общее время выполнения тестовых скриптов, нежели у остальных браузеров (кроме, конечно, IE), и тем паче.

скрипты и результаты замеров в студию.

>> А ведь движок-то у них с Safari один, Webkit.

движок JavaScript у Chrome называется V8.

Reply

torbasow June 9 2010, 07:13:11 UTC
Добавил в исходный пост.

Reply

mr_aleph June 9 2010, 07:26:33 UTC
спасибо! посмотрим, что там такое медленное.

еще хотелось бы все таки код странички с помощью, которой проводились измерения в браузерах.

Reply

torbasow June 12 2010, 08:41:37 UTC

Ну, блин, там всё тривиально:

Тест

Reply


Leave a comment

Up