Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2013, 19:21
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

производительность: querySelectorAll vs getElementsByClassName
на данный момент использую конструкцию выборки элементов на странице:
if(document.getElementsByClassName){
	//alert('getElementsByClassName')
}
else if(document.querySelectorAll){
	//alert('querySelectorAll')
}

это было сделано для работоспособности в ИЕ8, вот
а есть ли способ "на лету" определять в каком браузере, что работает быстрее?
P.S. если кому интересно тут можно покрутить тесты: jsperf.com/getelementsbyclassname-vs-queryselectorall
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2013, 20:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от lekba
а есть ли способ "на лету" определять в каком браузере, что работает быстрее?
А разве где-то querySelector работает быстрее чем getElementsByClassName ?
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2013, 20:57
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

в опере быстрее, может и в мини.опере также быстрее!?
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2013, 21:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Хм, действительно. Но разница всего лишь 2x, так что можно смело забить.
lekba, ты уверен, что выборка по классу - это узкое место в твоем коде, которое нужно оптимизировать? Скорее всего ты пытаешься сэкономить пару спичек.
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2013, 22:16
Интересующийся
Отправить личное сообщение для lekba Посмотреть профиль Найти все сообщения от lekba
 
Регистрация: 26.05.2013
Сообщений: 22

danik.js, выборка не самое узкое место, но оптимизация в этом месте не помешает, пока выигрыш составил ~50мс по тестам в топовой четверке браузеров только на выборке из 2000 элементов :-)

оптимизирую такой код:
есть список городов в формате шаблона где "0.00 RUR", "0 USD" - шаблон
на каждый город есть свой множитель заданный в массиве "tariff":{"moscow":"10","omsk":"1"}
<div class="price moscow">0.00 RUR</div>
<div class="price spb">0 USD</div>
<div class="price omsk">0 RUR</div>
<div class="price moscow">0.00 RUR</div>
<div class="price spb">0.00 RUR</div>


делаю выборку элементов и обрабатываю
list = document.getElementsByClassName("price "+city[i][1]);
if(list[0]!=null){
//make price
}


сейчас решил отказаться и делать обработку по индексу
document.getElementsByClassName("price");

теперь надо решить, как избежать повторной обработки одинаковых элементов при условии, что шаблон одинаков <div class="price moscow">0.00 RUR</div>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как влияет большое количество eventListener'ов на производительность веб-страницы? Bebarr Swallow Общие вопросы Javascript 3 16.01.2013 02:14
querySelectorAll - Как научить ему ie 8- ??? viktorina Internet Explorer 6 06.01.2013 14:46
querySelectorAll - не работает селектор "contains" Почемучкин Events/DOM/Window 2 29.11.2012 07:59
фишка или баг querySelectorAll? PeaceCoder Events/DOM/Window 7 09.10.2011 17:09