Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   QSA CSS Selector Engine v1.0 - Выкладываю CSS-селектор по просьбе трудящихся (https://javascript.ru/forum/project/24330-qsa-css-selector-engine-v1-0-vykladyvayu-css-selektor-po-prosbe-trudyashhikhsya.html)

FINoM 28.12.2011 00:27

Это какой-то фреймворк для замеров скорости?

trikadin 28.12.2011 00:28

Цитата:

Сообщение от FINoM
Это какой-то фреймворк для замеров скорости?

Да.

Там подписано внизу.

devote 28.12.2011 00:29

Цитата:

Сообщение от FINoM
Добавь плиз querySelectorAll

ну добавил

devote 28.12.2011 00:29

Цитата:

Сообщение от FINoM
Это какой-то фреймворк для замеров скорости?

для замеров скорости селекторов

FINoM 28.12.2011 00:30

Цитата:

Сообщение от trikadin
А нативную ф-цию подключать смысла нет, имхо.

Мне кажется есть.
Цитата:

Сообщение от devote
для замеров скорости селекторов

Оно один раз селектит или много?

FINoM 28.12.2011 00:33

Цитата:

Сообщение от devote
для замеров скорости селекторов

Не подскажешь фреймворк для замера скорости не только селекторов?

devote 28.12.2011 02:07

Цитата:

Сообщение от FINoM
Оно один раз селектит или много?

много, если точно 25раз, в моей версии, вычисляет среднее время со всех запусков, я его доработал ибо их версия всем довала одинаковые значения, и там небыло значения с плавующей точкой. тоесть микросекунд
Цитата:

Сообщение от FINoM
Не подскажешь фреймворк для замера скорости не только селекторов?

неа

float 29.12.2011 12:22

Потестил в опере 8,5 :D
до селектора div, p, a расклад примено 500/8000 в пользу сизла.
qsa проседает на селекторах:
p + p + .example > p
body div
div p
на 1-м меньше всего кстати. что странно...
оба сильно проседают на селекторе div, p, a
сизл на минуту зависает, qsa на пол.

ещё неплохо бы эксепшены добавить. чтобы запросы типо qsa.querySelectorAll('>') не вешали намертво браузер.

имхо с реди и расширением прототипа эт залишнее.

devote 29.12.2011 14:36

float,
нашел на чем тестить, речь идет о сегдняшних браузерах. ие7, ие8, вот эти два важных браузера в которых нужно тестить, а опера 8 это прошлый век. и я не совсем понял все же по твоим тестам кто лидер. выше ты написал одно, ниже другое.

и всмысле виснет?

devote 29.12.2011 15:07

ок, зависание убрал... удалил пару ненужных функций, вместо них написал новую. Вывожу эскепшн.. проседания у меня таковы:
если смотреть в ИЕ8 то разница между сизл и qsa таковы:
p + p + .example > p
сизл - 20.19 ms | 40 found
qsa - 27.31 ms | 40 found

div p
сизл - 20.88 ms | 140 found
qsa - 55.88 ms | 140 found

Это все в чем проигрывает qsa сизлу, во всех остальных селекторах сизл либо проигрывает либо на ровне, в большинстве случаях сизл проигрывает. Особенно на сложных селекторах.

Цитата:

Сообщение от float
на 1-м меньше всего кстати. что странно...

Немного теории, как они работают. сизл работает в обратную сторону, тоесть он сначала ищет то что указано в конце селектора, а потом ищет родителей совпавших с селектором ранее. Тоесть такой селектор:
p + p + .example > p
он перебирает таким образом: находит все теги P который указан в конце селектора. Потом ищет родителей с классом .example ну а потом смотрит что бы у родственника был брательник с тегом P и у того тоже брательник с тегом P. У меня же селектор идет от начала селектора, ищет все P, находит у них братьев и так далее. Вот именно из-за этого и есть разница, выигрывает тот кто быстрее наткнется на неудачу... поэту это сложный селектор и он всегда у всех может быть иной результат, все зависит от количества элементов в документе, и количества совпадений.. потому что прокручивать приходиться каждого рекурсивно в поисках дополнительных правил.

Цитата:

Сообщение от float
имхо с реди и расширением прототипа эт залишнее.

Это лишь дополнительная библиотека, реди нужен для того что бы дождаться загрузки DOM и всем существующим элементом назначить прототипы.

Никто не заставляет пользоваться версией с прототипами. Именно поэтому и сделаны две ветки.


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