Сообщение от 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-селекторам.