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

PeaceCoder 24.01.2010 22:29

Немного новостей. Бился долго против jQ и все же пока такие результаты: нестандартные запросы jQ отстает от моей реализации в 2-3 раза. Сегодня просмотрел логику работы Sizzle, на котором построен jQ - ее я не применял. Вот ща думаю и ее применить, тогда думаю раза в 4 jQ будет отставать. Занимаемый код около 100 строк (около 3000 символов)... еще не конец....

Riim 25.01.2010 00:51

Уже быстрей, чем jass?

Kolyaj 25.01.2010 11:47

Цитата:

Сообщение от PeaceCoder
нестандартные запросы jQ отстает от моей реализации в 2-3 раза.

А стандартные? Нестандартные-то мало кого интересуют.

PeaceCoder 25.01.2010 12:42

Цитата:

Сообщение от Kolyaj
А стандартные? Нестандартные-то мало кого интересуют.

А стандартные по возможности выполняет querySelectAll как и в Sizzle

tenshi 25.01.2010 13:36

нестандартные - это какие?

PeaceCoder 25.01.2010 13:51

Цитата:

Сообщение от tenshi
нестандартные - это какие?

Псевдо :input,:checkbox и т.п. + мои расширения, например:

B < !DIV!SPAN{prop+5>=10, innerHTML=`<table>`i}

возьмет все элементы B, которые содержат элементы детей кроме DIV и SPAN, у которых свойство prop есть и выполняется условие или innerHTML проходит по регулярному выражению
#`text`i

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

ну и т.п.

e1f 25.01.2010 14:56

PeaceCoder,
а Вы можете ответить на такой вопрос -- нафига?
Что это дает? Вы действительно считаете, что в прикладных решениях нужны подобные говновыборки?

PeaceCoder 25.01.2010 15:03

Цитата:

Сообщение от e1f
а Вы можете ответить на такой вопрос -- нафига?
Что это дает? Вы действительно считаете, что в прикладных решениях нужны подобные говновыборки?

если делаю, значит я уже с таким сталкивался, и как можно видеть не только я один. Вы может этого не замечали, но может тоже с таким сталкивались но в силу того что JQ такого не позволяет обходили другими способами. + это расширение и на скорость никак не влияет.
А кстати запрос
B < !DIV!SPAN{prop+5>=10, innerHTML=`<table>`i}

Аналогичен jQ
B:not(а дальше хз как задать запрос аналогичный моему)

e1f 25.01.2010 15:14

А Вам не кажется, что если Вы с таким сталкивались, то это может означать криво спроектированный шаблон?

PeaceCoder 25.01.2010 15:22

Цитата:

Сообщение от e1f
А Вам не кажется, что если Вы с таким сталкивались, то это может означать криво спроектированный шаблон?

нет это значит высокая гибкость проекта.

e1f 25.01.2010 15:57

И в чем будет заключатся гибкость проекта? Мы изменили шаблон -- теперь нужно переписать Ваши заумные селекторы, вместо того, чтобы, оставив ключевые классы, ничего не трогать в javascript-части. Гибко, однако.

x-yuri 26.01.2010 06:55

Цитата:

Сообщение от PeaceCoder
если делаю, значит я уже с таким сталкивался, и как можно видеть не только я один

и кто же этот второй?

tenshi 26.01.2010 09:31

> кстати такую задачу люди здесь уже спрашивали
и почему всех так интересует, как прострелить себе ногу? х))

tenshi 26.01.2010 09:45

как мне выбрать все элементы b, u или i, но не span имеющие идентификаторы вида 'email1234', где число после email меньше 1024, такие, что вложенные в них span-ы c классами 'current' и 'original' имеют внутри себя валидные email адреса ( при этом каждый из спанов может быть и пустым или вообще отсутствовать, но не оба одновременно )?

PeaceCoder 26.01.2010 13:50

пока раскрытие скобок не сделал (много времени занимает), но с ними выглядело бы так:

(B,U,I)#`email([0-9]{1,3}|10[01][0-9]|102[0-3])`(:empty, < SPAN.curent.original{innerHTML=`регулярка валидности Email|`i})

tenshi 26.01.2010 17:57

> SPAN.curent.original
это должны быть разные спаны, и присутствовать должен хотябы один из них (с валидным мылом разумеется)

tenshi 26.01.2010 17:58

> :empty
а вот таких выбирать не надо

PeaceCoder 26.01.2010 18:21

(B,U,I)#`email([0-9]{1,3}|10[01][0-9]|102[0-3])` < SPAN(.curent.!original,.original.!curent){innerHTML=`регулярка валидности Email|`i}


Вот ток задача еще сделать быстрый разбор раскрытия скобок за 1 проход...

tenshi 27.01.2010 01:32

опять не то, твой запрос неправильно отработает, если в одном спане будет валидный емыл, а в другом - невалидный :-Р

PeaceCoder 27.01.2010 01:46

кто те ктакое сказал? условие поставлено что бы брать только валидные. Если ты имеешь ввиду в конце | то это можно убрать.

tenshi 27.01.2010 03:10

он выбирает те элементы в которых есть валидные элементы, но он не гарантирует, что они валидны все.

PeaceCoder 27.01.2010 14:41

Цитата:

Сообщение от tenshi
но он не гарантирует, что они валидны все.

эт ты так думаешь

tenshi 27.01.2010 15:30

то есть твой предикат действует на множество с квантификатором "и"? а если мне нужно "или"?

PeaceCoder 27.01.2010 15:31

, = ИЛИ
пробел = И
Это везде что внутри скобок что вне скобок

x-yuri 05.02.2010 16:58

слушай, я придумал, эти селекторы должны называться регулярными :)

e1f 05.02.2010 17:22

PCEngine == P(eace)C(oder)Engine :)
Он все рассчитал :)

PeaceCoder 05.02.2010 17:40

Цитата:

Сообщение от x-yuri
слушай, я придумал, эти селекторы должны называться регулярными

хорошая идея.
Цитата:

Сообщение от e1f
PCEngine == P(eace)C(oder)Engine

Тоже неплохо. Ток мой CMS называется FLECO и соотв функция ядро - F$


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