Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> какой селектор быстрее? 
:(
    Опции темы
fish9370
Дата 15.7.2013, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: нет
Всего: 1



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

Код

alert($('.container .item').val())


или более уточненный

Код

alert($('.container .form .left-menu .item').val())





--------------------
undefined
PM MAIL WWW ICQ   Вверх
Arantir
Дата 15.7.2013, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Судя по всему - абсолютно без разницы http://jsperf.com/multi-vs-simple-selectors-test

Надо копошится во внутреннем устройстве селекторов, чтобы более уверенный ответ дать.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
CruorVult
Дата 15.7.2013, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Этот
Код

document.querySelectorAll('.container .item')


PM MAIL Skype   Вверх
Arantir
Дата 15.7.2013, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



CruorVult, вот только на нем jQuery не поюзаешь. А если результат пихать в jQuery, то выходит медленнее, чем если сразу через jQuery 
http://jsperf.com/multi-vs-simple-selectors-test/3

Добавлено через 3 минуты и 48 секунд
Черт, а в Firefox наоборот : D
Правда разница ~1%


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
CruorVult
Дата 15.7.2013, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Arantir, это я к тому, что можно некоторые вещи и без jquery делать smile 
PM MAIL Skype   Вверх
Arantir
Дата 15.7.2013, 14:14 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Ну это уже из категории "все можно сделать на ассемблере... если жизни хватить" =)

Время - деньги. Из-за принципиальной разницы между серверным и клиентским приложением, зачастую, проблема ресурсозатрат клиентского приложения не столь критична. Удовлетворительный уровень называеться "не лагает" smile
По этому возможность более быстрой разработки перевешивает.

Это сообщение отредактировал(а) Arantir - 15.7.2013, 14:15


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
CruorVult
Дата 15.7.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Arantir, да, ты прав, если на странице нужно делать относительно небольшие манипуляции с ДОМ-ом, лучше всего использовать jQuery с легким синтаксисом и кроссбраузерностью.
Но, если ТС спрашивает какой код быстрее работает, то, скорей всего, его интересует производительность. Производительность = native JS. В общем то и все.



PM MAIL Skype   Вверх
fish9370
Дата 15.7.2013, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: нет
Всего: 1



Цитата(Arantir @  15.7.2013,  13:28 Найти цитируемый пост)
Судя по всему - абсолютно без разницы http://jsperf.com/multi-vs-simple-selectors-testНадо копошится во внутреннем устройстве селекторов, чтобы более уверенный ответ дать.


мне кажется надо завернуть это в цикл, и множественно прогнать

Добавлено через 6 минут и 39 секунд


Цитата(CruorVult @  15.7.2013,  14:45 Найти цитируемый пост)
Arantir, да, ты прав, если на странице нужно делать относительно небольшие манипуляции с ДОМ-ом, лучше всего использовать jQuery с легким синтаксисом и кроссбраузерностью.Но, если ТС спрашивает какой код быстрее работает, то, скорей всего, его интересует производительность. Производительность = native JS. В общем то и все.


на самом деле код ведь не выполняется постоянно в цикле, он вешается в качестве обработчиков на некоторые события. навешивать обработчики беспорно удобнее с помощью jquery, селекторы в jquery сделаны по-человечески, если приписать сюда еще и кроссбраузерность, получается бомба.

меня интересует производительность селекторов именно в контексте jquery.



--------------------
undefined
PM MAIL WWW ICQ   Вверх
Arantir
Дата 15.7.2013, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Цитата(fish9370 @  15.7.2013,  13:57 Найти цитируемый пост)
мне кажется надо завернуть это в цикл, и множественно прогнать

Собственно, тот сайт с тестами именно это и делает.

Цитата(CruorVult @  15.7.2013,  13:45 Найти цитируемый пост)
Но, если ТС спрашивает какой код быстрее работает, то, скорей всего, его интересует производительность. Производительность = native JS. В общем то и все.
Цитата(fish9370 @  15.7.2013,  13:57 Найти цитируемый пост)
меня интересует производительность селекторов именно в контексте jquery.

Думаю ТС просто хочет найти баланс между удобством и производительностью. 
Чтобы и jQuery, но излишне не загрузить браузер.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
fish9370
Дата 15.7.2013, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: нет
Всего: 1



Цитата(Arantir @  15.7.2013,  17:03 Найти цитируемый пост)
Думаю ТС просто хочет найти баланс между удобством и производительностью. Чтобы и jQuery, но излишне не загрузить браузер.


верно.. smile


--------------------
undefined
PM MAIL WWW ICQ   Вверх
CruorVult
Дата 16.7.2013, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

Репутация: 13
Всего: 28



Цитата(fish9370 @  15.7.2013,  17:14 Найти цитируемый пост)
верно..  


Ну тогда, как ответил Arantir, разницы нету.

Можно конечно разобраться как работает движок селекторов(на разных браузерах) и добиться небольшой производительности на 10%, при этом воспользоваться jQuery и снизить производительность на 100%  smile 
PM MAIL Skype   Вверх
Sanchezzz
Дата 18.7.2013, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60



Вроде на хабре была статья про селекторы и их скорость.
Если я не ошибаюсь то селектор по #id работает быстрей, особенно если они уникальны.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL Skype GTalk   Вверх
Arantir
Дата 18.7.2013, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Цитата(Sanchezzz @  18.7.2013,  20:12 Найти цитируемый пост)
Если я не ошибаюсь то селектор по #id работает быстрей

Насколько помню, все id складываются в хэш-таблицу при загрузке DOM.

Цитата(Sanchezzz @  18.7.2013,  20:12 Найти цитируемый пост)
особенно если они уникальны

особенно будет, когда они не уникальны  smile 
Они должны быть уникальными. Нетрудно заметить, что по одному ID будет выбран только первый элемент с этим ID, если их (вдруг) несколько.
Селекторы классов вторые по производительности. Наверное тоже складываются в коллекции какие-то при загрузке. А дальше уже идут, по видимому, ран-тайм селекторы.



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
krundetz
Дата 19.7.2013, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(Arantir @  18.7.2013,  22:07 Найти цитируемый пост)
 
Они должны быть уникальными. Нетрудно заметить, что по одному ID будет выбран только первый элемент с этим ID, если их (вдруг) несколько.

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

Это сообщение отредактировал(а) krundetz - 19.7.2013, 10:35


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Sanchezzz
Дата 19.7.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 3
Всего: 60





--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2862 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.