Показать сообщение отдельно
  #35 (permalink)  
Старый 10.02.2010, 13:07
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Cr@ZyBoY
на мой выбор такого типа циклов повлияла вот эта статья
статья почти правильная, но вот поняли вы ее видимо не совсем правильно, вот эта фраза:

Цитата:

нужно выполнить какие-либо действия с элементом массива, то без кэширования его в локальную переменную никак не обойтись
про кэширование сказано, но вот ни слова нет о том, в каких ситуациях это кэширование даст прирост производительности. Например, такой код:
obj.prop;
obj.prop;
obj.prop;
obj.prop;


здесь свойство считывается 4 раза, на считывание свойства уходит какое-то время, пусть это время будет X. Всего получается 4X. На перезапись переменной тоже уходит какое-то время, это время в зависимости от браузера может быть больше или меньше X, но не намного и если посмотреть сколько людей пользуются тем или иным браузером, то в среднем можно считать, что на считывание свойства и на перезапись переменной время затрачивается в точности одинаковое. Теперь кэшируем значение:

var t = obj.prop;
t;
t;
t;
t;


вместо четырех считываний свойств (4X) теперь одно считывание и одна перезапись (2X), т. е. производительность улучшилась примерно в два раза. Однако если свойство считывается только один раз, то его кэширование приведет к ухудшению производительности, что и происходит в большинстве ваших циклов, цикл хоть и много раз срабатывает, но имя считываемого свойства меняется в каждой итерации.


UPD: не понимаю как без самых основ по оптимизации кода можно браться писать движки для выборки по css-селекторам.

Последний раз редактировалось Riim, 10.02.2010 в 13:11.
Ответить с цитированием