Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Скорость Выбоки jQuery (https://javascript.ru/forum/jquery/6954-skorost-vyboki-jquery.html)

PeaceCoder 10.01.2010 12:35

Цитата:

Сообщение от Michael83
получается у jQuery выборка по #ID занимает 3 мс / 100 итераций = 0.03 мс а у вас 0.05 пока jQuery выигрывает.

Я еще до конца не оптимизировал. + Вы сравниваете мою машину и вашу. И еще не известно в каком браузере. На моей машине #ID с jQuery ~ равны. И в данном случае я планирую сделать такие выборки которые jQuery не по зубам. Или по зубам но они будут долгими. Когда реализую, отпишу возможности время выполнения и ~ размер кода

Michael83 11.01.2010 02:26

прикольно, буду ждать с интересном :)

PeaceCoder 13.01.2010 19:15

Скрипт еще в разработке но могу уже привести некоторые результаты

вот такой селектор
TABLE#`child` >(:2,4:6,8:) (((DIV:#(:-10,-4:-2,-0) ~-1:2)(B,A({title!=`Гыгы`i},[height='100px'])),U){title=`^До\`бро`i}) +2, SPAN.!`window`i <1:4 A


раскладывается на 31 комбинацию селекторов за:
0.0023мс в Chrome,
0.0063мс в MZ,
0.01мс Opera,
0.9мс в Safari
5-6мс в IE8

Селектор составлен хатично для показа максимума. Планируется ввести выборку по регулярке(`JSRegExp`[igm]), по атрибутам, свойствам и значениям стилей. Также в командах >,+, и новой задуманной мной < есть уровни вложенности проверок. Например, одна из возможностей, "TABLE >3:6 A" будет искать все A которые находятся в TABLE и уровень родителя TABLE не ближе 3 и не дальше 6. Позже распишу подробнее.

Octane 13.01.2010 19:31

Цитата:

Сообщение от PeaceCoder
"TABLE >3:6 A" будет искать все A которые находятся в TABLE и уровень родителя TABLE не ближе 3 и не дальше 6.

только кто, кроме тебя, захочет разбираться в каком-то новом хитром синтаксисе селекторов, когда стандартизированных CSS и XPath больше чем достаточно? :)

PeaceCoder 13.01.2010 19:53

Цитата:

Сообщение от Octane
олько кто, кроме тебя, захочет разбираться в каком-то новом хитром синтаксисе селекторов

именно. он не нов. а расширен. все что умеет jQuery будет иметь и мой.

Kolyaj 13.01.2010 21:58

PeaceCoder,
а зачем такие селекторы вообще нужны?

PeaceCoder 13.01.2010 22:51

Цитата:

Сообщение от Kolyaj
а зачем такие селекторы вообще нужны?

а зачем селекторы вообще нужны? если есть селекторы, значит надо их сделать на максимум
А вообще, для ускорения выборки и точности фильтра.

Kolyaj 14.01.2010 11:58

Цитата:

Сообщение от PeaceCoder
а зачем селекторы вообще нужны?

Да я хз. Мне tagName+className без каскадов всегда хватало. А вот такие сложные так вообще не могу представить где бы понадобились.

Michael83 14.01.2010 13:33

Цитата:

Сообщение от Kolyaj (Сообщение 40506)
Да я хз. Мне tagName+className без каскадов всегда хватало. А вот такие сложные так вообще не могу представить где бы понадобились.

Полностью согласен, я для очень сложных вещей обычно использую несколько селекторов типа этого
$('#someid .clazz[attr=some]').each(function() {
  var $this = $(this);
  if ($this.is('...selector...') {
    $this.find('...another..selector...')...
    ...
  } else {
    ...
  }
})


Это конечно не значит что я не знаю всех возможностей селекторов, просто частенько получается так что напишешь супер-чудо-селектор, а потом на след. неделю уже не сможешь с ходу понять и вспомнить как тут и что. :) тем более не думаю что производительность в приведенном выше коде ощутимо хуже, по сути тот же js выполняется

PeaceCoder 14.01.2010 15:33

Цитата:

Сообщение от Michael83
я для очень сложных вещей обычно использую несколько селекторов

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

Сообщение от Michael83
ем более не думаю что производительность в приведенном выше коде ощутимо хуже

ощутимо хуже. на порядок точно т.к. для каждого полученного элемента Вы проверяете не является ли он чемто + создаете новый обьект с новым запросом и не факт того, что будет хоть какой то результат. а если резултата нет, время между первым и запросом и обработкой "духов" потрачено впустую (все команды each)


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