25.12.2011, 20:16
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
Никто не говорил, что селекторами быстро.
|
Встроенные функции, как правило, быстрее циклов.
Сообщение от Nekromancer
|
Эт вы в jQuery понабрались.
|
А причем здесь jQuery?
|
|
25.12.2011, 20:28
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Сообщение от FINoM
|
Встроенные функции, как правило, быстрее циклов.
|
Неужели, а цикл типо не встроенный? Цикл например быстрее forEach. Я конечно понимаю о чём вы говорите, но правильно то нужно выражаться. Да и что за привычка приводить всё к одному, вы представляете как работает та функцию, о которой вы говорите?
Сообщение от FINoM
|
А причем здесь jQuery?
|
Девиз jQuery - "пиши меньше - делай больше". Туда же попадает и удобнее. Но все забывают написать о том, что работай медленнее.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
25.12.2011, 20:32
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
Да и что за привычка приводить всё к одному, вы представляете как работает та функцию, о которой вы говорите?
|
Я так понимаю, что она работает так же, как и селектор в css, а как работают селекторы в css, имею представление.
Сообщение от Nekromancer
|
Девиз jQuery - "пиши меньше - делай больше". Туда же попадает и удобнее. Но все забывают написать о том, что работай медленнее.
|
Это — не сиззл, это — встроенная функция. Она точно была бы быстрее (при наличии селектора первого потомка), чем цикл + проверка каждого элемента на соответствие селектору.
|
|
25.12.2011, 20:38
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Сообщение от FINoM
|
Я так понимаю, что она работает так же, как и селектор в css, а как работают селекторы в css, имею представление.
|
Ну вот и расскажите, почему оно быстрее тогда.
Сообщение от FINoM
|
Это — не сиззл, это — встроенная функция. Она точно была бы быстрее (при наличии селектора первого потомка), чем цикл + проверка каждого элемента на соответствие селектору.
|
Ну сделайте бенчмарк, посмотрим Хотя через тот способ, что вы предложили в начале, через id. И кстати, как jQuery не причём, если вы пытаетесь воспользоваться селектором из jQuery, в селекторах CSS. В css так писать нельзя:
> div {
/* ... */
}
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Последний раз редактировалось Nekromancer, 25.12.2011 в 20:40.
|
|
25.12.2011, 20:41
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
Ну сделайте бенчмарк, посмотрим
|
Ок, попробую.
|
|
26.12.2011, 03:44
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сделал бенчмарк при 20 дивах, каком-то количестве других элементов, 10000 итерациях. Селекторы быстрее в 17 раз. Может быть можно оптимизировать выборку по childNodes, но, уверен, это не придаст существенного увеличения скорости.
Бенчмарк без присваивания результатов выборки:
http://jsfiddle.net/finom/RDV7g/6/
selector: 189ms
childNodes: 3246ms
Бенчмарк с присваиванием:
http://jsfiddle.net/finom/LBU4W/1/
selector: 188ms
childNodes: 3170ms
|
|
26.12.2011, 03:46
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
В css так писать нельзя
|
Я знаю, но думал может в querySelector добавили что-то типа @this.
|
|
26.12.2011, 03:47
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Ах да, для запуска нужен хром и консоль.
|
|
26.12.2011, 03:57
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
А вот тест с поиском по атрибуту:
<div data-id="main1234567">...</div>
div.querySelectorAll('[data-id="main1234567"] > div');
http://jsfiddle.net/finom/LBU4W/2/
Результат тот же.
|
|
26.12.2011, 04:09
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
http://jsfiddle.net/RDV7g/7/
Firefox:
selector: 442ms
childNodes: 654ms
Chrome:
selector: 689ms
childNodes: 1173ms
http://jsfiddle.net/RDV7g/8/
Firefox:
childNodes: 302ms
selector: 451ms
Chrome:
childNodes: 373ms
selector: 681ms
Давайте не усложнять код
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
|
|