| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > какой селектор быстрее? |
| Автор: fish9370 15.7.2013, 13:01 | ||||
много использую jquery и хочу для себя узнать, какой селектор быстрее:
или более уточненный
|
| Автор: Arantir 15.7.2013, 13:28 |
| Судя по всему - абсолютно без разницы http://jsperf.com/multi-vs-simple-selectors-test Надо копошится во внутреннем устройстве селекторов, чтобы более уверенный ответ дать. |
| Автор: CruorVult 15.7.2013, 13:35 | ||
Этот
|
| Автор: Arantir 15.7.2013, 13:50 |
| CruorVult, вот только на нем jQuery не поюзаешь. А если результат пихать в jQuery, то выходит медленнее, чем если сразу через jQuery http://jsperf.com/multi-vs-simple-selectors-test/3 Добавлено через 3 минуты и 48 секунд Черт, а в Firefox наоборот : D Правда разница ~1% |
| Автор: CruorVult 15.7.2013, 14:01 |
| Arantir, это я к тому, что можно некоторые вещи и без jquery делать |
| Автор: Arantir 15.7.2013, 14:14 |
| Ну это уже из категории "все можно сделать на ассемблере... если жизни хватить" =) Время - деньги. Из-за принципиальной разницы между серверным и клиентским приложением, зачастую, проблема ресурсозатрат клиентского приложения не столь критична. Удовлетворительный уровень называеться "не лагает" По этому возможность более быстрой разработки перевешивает. |
| Автор: CruorVult 15.7.2013, 14:45 |
| Arantir, да, ты прав, если на странице нужно делать относительно небольшие манипуляции с ДОМ-ом, лучше всего использовать jQuery с легким синтаксисом и кроссбраузерностью. Но, если ТС спрашивает какой код быстрее работает, то, скорей всего, его интересует производительность. Производительность = native JS. В общем то и все. |
| Автор: Arantir 15.7.2013, 17:03 | ||||
Собственно, тот сайт с тестами именно это и делает.
Думаю ТС просто хочет найти баланс между удобством и производительностью. Чтобы и jQuery, но излишне не загрузить браузер. |
| Автор: fish9370 15.7.2013, 17:14 | ||
верно.. |
| Автор: CruorVult 16.7.2013, 11:15 |
Ну тогда, как ответил Arantir, разницы нету. Можно конечно разобраться как работает движок селекторов(на разных браузерах) и добиться небольшой производительности на 10%, при этом воспользоваться jQuery и снизить производительность на 100% |
| Автор: Sanchezzz 18.7.2013, 21:12 |
| Вроде на хабре была статья про селекторы и их скорость. Если я не ошибаюсь то селектор по #id работает быстрей, особенно если они уникальны. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51e3c8d66ccc192d7e000002#findElement_E7045_51e8300a6ccc19745b001f8a_0 |
| Автор: Arantir 18.7.2013, 22:07 |
Насколько помню, все id складываются в хэш-таблицу при загрузке DOM. особенно будет, когда они не уникальны Они должны быть уникальными. Нетрудно заметить, что по одному ID будет выбран только первый элемент с этим ID, если их (вдруг) несколько. Селекторы классов вторые по производительности. Наверное тоже складываются в коллекции какие-то при загрузке. А дальше уже идут, по видимому, ран-тайм селекторы. |
| Автор: krundetz 19.7.2013, 10:33 | ||
к сожалению, встречаются индивиды которые об этом забывают, а ты потом сидишь и думаешь почему правильно написанный код не правильно работает, а работает он не правильно так как поведение браузера при наличие нескольких элементов с одинаковым ID не всегда однозначно ((( |
| Автор: Sanchezzz 19.7.2013, 15:57 |
| Во нашел http://habrahabr.ru/post/111195/ |
| Автор: akizelokro 23.7.2013, 16:45 |
| По идее, первый селектор должен работать быстрее. Меньше условий для поиска. Но это по идее. потому что реально будет всё зависеть от самой структуры html и его размера. Но первый вариант на одном и том же html должен работать, как иминимум, не медленнее. imho. |