2014-12-30 4 views
1

В настоящее время я пишу свой bachelorthesis о webperformance и натолкнулся на некоторые результаты, которых я не ожидал.jquery class-selector vs квалифицированный селектор классов

Как и сам польский ирландский или jquery, рекомендуется всегда спускаться с идентификатора.

http://learn.jquery.com/performance/optimize-selectors/

Так что я бы ожидал, что $ (». Класс ') должен быть ниже, чем $ (' # идентификатор класса ') или $ (' # идентификатор '). Найти ('. Класс) ,

Я испытал это на JSPerf и пришли к довольно межжала результат:

http://jsperf.com/selektor/2

Results http://fs1.directupload.net/images/141230/5euuefin.png

Похоже, что это действительно зависит от браузера, но я действительно не ожидал, что $ ('.class'), чтобы работать так хорошо, особенно в Chrome, это намного быстрее, чем те, кто сходит с id.

Что имеет смысл для меня, это следующее объяснение, но почему разница настолько велика в этих браузерах. Являются ли двигатели такими разными?

Разница заключается в использовании одного класса или поиска идентификатора, getElementsByClassName и getElementById, которые быстрее, чем querySelector. В современных браузерах вы увидите, что в 10 раз быстрее.

Источник: http://jsperf.com/jquery-class-vs-tag-qualfied-class-selector/38

Так что ваше мнение по этому поводу?

+0

Это (сильно) указывает, что современные браузеры также кэшируют записи классов (а также их обычную быструю таблицу поиска ID). Любые дополнительные накладные расходы на код (добавление поиска по идентификатору) замедляют работу. Приятно знать. –

+0

Добавлен ответ на единственный реальный вопрос ниже, поскольку вы выставили действительно полезную информацию. +1 :) –

ответ

1

В ответ на единственный реальный вопрос в вашем вопросе: «Какой смысл мне следующее объяснение, но почему разница настолько велик на тех браузерах ли двигатели настолько разные

Ответ, конечно, «Да». Все эти три браузера основаны на разных кодовых базах, и различные методы кодирования приведут к значительному разному в скорости. например «спросите у 3-х кодеров решение, и вы получите 3 разных решения» :)

Самое главное отметить, что класс только поиск на самом деле очень быстрый в современных браузерах, несмотря на предложения об обратном. Добавление дополнительных проверок (даже селектор ID) приведет к замедлению поиска класса. Это означает, что большинство, если не все, современных браузеров хранят кеш классов и элементов. Вероятно, это было предназначено для более быстрой обработки CSS, но побочный эффект - это также быстрый поиск по классам.

Смежные вопросы