JQuery 1.3+ селектор производительности - PullRequest
0 голосов
/ 21 ноября 2011

Я только что создал страницу тестирования производительности селектора jquery. http://guhelouis.github.com/jquery_performance/

Есть 10000 делений с именем класса от .div-cl-1 до .div-cl-10000. И я пытаюсь получить .div-cl-9999 с 2 различными селекторами:

  • $ ( 'div.div-сл-9999)
  • $ (». Div-сл-9999' )

Как вы можете догадаться, первый будет быстрее второго. Но, пожалуйста, посмотрите результат в http://guhelouis.github.com/jquery_performance/ (нажмите кнопку Run it , извините, но она немного медленная), первый результат всегда будет первым медленнее, чем второй .

и если вы измените порядок выполнения, значит:

  • $ (». Div-сл-9999' )
  • $ ( 'div.div-сл-9999)

Результат снова нормализуется.

Это какая-то «индексация» внутри нового механизма выбора jquery?

PS: эти странные результаты возникают только при использовании jquery 1.3+ (время, когда JQuery начал использовать Sizzle).

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Оба являются разными селекторами.

$('div.div-cl-1') // select all div elements with class "div-cl-1" 

$('.div-cl-1') // select all elements with class "div-cl-1"

Например: первый не выберет что-то вроде

<p>
    <span class="div-cl-1">test</span>
</p>

РЕДАКТИРОВАТЬ: Просто нашел это - http://jsperf.com/jquery-selector-speed-tests

2 голосов
/ 21 ноября 2011

Я не уверен насчет jQuery, но выбор css работает быстрее, если вы не укажете имя тега указанного класса, потому что css сначала смотрит на имя класса, а затем проверяет, является ли элемент указанным тегом.Предполагая, что jQuery использует собственный селектор запросов браузера или селектор классов (если он существует), первый селектор будет работать медленнее.

...