Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   выбрать и изменить стиль элемента. Помогите найти ошибку (https://javascript.ru/forum/dom-window/21190-vybrat-i-izmenit-stil-ehlementa-pomogite-najjti-oshibku.html)

devote 01.09.2011 12:02

на вот тести

devote 01.09.2011 12:04

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

devote 01.09.2011 12:12

ок, потестил... Результат оказался ужастным :(

Opera:
getElementById - 1 030 276 выполнений/1000 мс
querySelectorAll - 1 096 516 выполнений/1000 мс

Chrome:
getElementById - 2 203 944 выполнений/1000 мс
querySelectorAll - 129 707 выполнений/1000 мс

FireFox:
getElementById - 993 481 выполнений/1000 мс
querySelectorAll - 150 381 выполнений/1000 мс

IE 8:
getElementById - 119 640 выполнений/1000 мс
querySelectorAll - 63 778 выполнений/1000 мс


Да беру свои слова обратно, не пробовал тестить на других... в Опере быстрее так как сижу на ней там и тестил... А оказалось в среднем ужас.

devote 01.09.2011 12:17

Вообщем вывод простой, кто на чем сидит тот о том и знает... Я на Опере, и понятно дело утверждаю что быстрее... Человек на Хроме, и понятно дело что у него быстрее... Но все же любопытно, чтож там в опере такого сделали что работает быстрее getElementById, жаль что они никогда не откроют исходники своего движка :(

kadabrik 01.09.2011 12:24

А осел как всегда "реактивен" :D, жаль что мне ща софт именно под него писать приходится...:-/
Да смотрю в опере querySelectorAll оставляет другие браузеры далеко позади, эх поделились бы исходничками :) хотя может она просто кеширование какоенить врубает...

devote 02.09.2011 04:04

Цитата:

Сообщение от kadabrik
хотя может она просто кеширование какоенить врубает...

Не знаю как насчет кеширования, но я попробовал такой вариант:
function test(){
  for(var q in ['a','b','c','d','e','f','g','h','i','j'] )
    document.getElementById(q);
}
test();
и
function test(){
  for(var q in ['a','b','c','d','e','f','g','h','i','j'] )
    document.querySelectorAll('[id="'+q+'"]');
}
test();
и вот результаты:
Opera:
getElementById - 189 692 выполнений/1000 мс
querySelectorAll - 120 429 выполнений/1000 мс

Chrome:
getElementById - 420 454 выполнений/1000 мс
querySelectorAll - 12 735 выполнений/1000 мс

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

kadabrik 02.09.2011 11:23

Всетаки в голову не лезет как простой getElementById работает медленнее чем сложный querySelectorAll, хотя судя по небольшой разницы в скоростях может в оперовском методе getElementById('foo') просто и вызывается querySelectorAll('[id="foo"]') :)


Часовой пояс GMT +3, время: 06:30.