Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Collection – фреймворк для управления данными (https://javascript.ru/forum/project/27848-collection-%E2%80%93-frejjmvork-dlya-upravleniya-dannymi.html)

kobezzza 29.10.2012 21:53

Цитата:

Сообщение от tenshi (Сообщение 212906)
я и не юзаю) но ты тратишь своё время впустую

Я так не думаю, либа решает мои проблемы и решает как я хочу, к тому же я пишу её почти столько же, сколько пишу на ЖС и каждая версия тренит мои скилы и знания (в итоге я получаю за свою работу кучу бабла, и могу хоть завтра пойти и купить себе новенький мерседес, чем не профит?) + я тупо получаю от этого кайф.

Цитата:

Сообщение от tenshi (Сообщение 212906)
вот именно что, фича для галочки. тонны кода, а как сделать банальное - выбрать записи со значением поля "';DROP TABLE users" я так и не нашёл.

Интерпретатор весит очень мало, килобайта 4. DROP делать нет смысла, для этого есть специальный метод.
Интепретатор призван заменить цепочки .get().group().stat().sort().get() и т.д. в один простой и очевидный запрос, а для всяких DROP - это просто не нужно.

Цитата:

Сообщение от tenshi (Сообщение 212907)
да, и я смотрю ты активно используешь eval - это крайне медленно. ибо jit приходится каждый раз напрягаться. использование замыканий даёт лучший результат.
вот, смотри, например, низкоуровневый шаблонизатор без единого эвала http://habrahabr.ru/post/99005/

Я юзаю eval в 3-х местах на 7к строк кода - это активно (из них кстати интерпретатор это 15%)? Тем более, что через eval проходит лишь малая часть (80% интерпретатора работает без eval), которая один раз компилится и далее кешируется. Без eval было бы просто тупо больше кода и мне это не нравится, скорость работы от такого приёма падает на 1-2%.

Твои комменты не обоснованы и глупы, а если ты пытаешься троллить, то делаешь это слишком толсто.

B~Vladi 29.10.2012 21:57

Кстати, на счет eval-ов. Еще один аргумент в пользу new Function - V8 применяет внутринние оптимизации для таких функций, а для eval нет. Стоит заменить.

Сори, что ввел в заблуждение в предыдущих постах. Там вместо GCC имелся ввиду V8, конечно же. А я думал, причем тут сжатие)) kobezzza, перечитай тот пост еще раз))

kobezzza 29.10.2012 22:03

Цитата:

Сообщение от B~Vladi (Сообщение 212910)
Кстати, на счет eval-ов. Еще один аргумент в пользу new Function - V8 применяет внутренние оптимизации для таких функций, а для eval нет. Стоит заменить.

Сори, что ввел в заблуждение в предыдущих постах. Там вместо GCC имелся ввиду V8, конечно же. А я думал, причем тут сжатие)) kobezzza, перечитай тот пост еще раз))

Я юзаю new Function где могу, а eval там, где мне нужно создать функцию в контексте другой, а не в глобальном scope. Т.к. в HAVING условиях могут указываться статистические функции, то я оптимизирую это за счёт того, что все указанные в запросе (в любых местах) функции вычисляются все сразу за один проход, а потом просто раздаются по значению, как раз тут мне и удобно (подчёркиваю, удобно) заюзать доступ к родительскому scope.

Я кстати писал первую версию интепретатора без eval вообще (и без Function), но практика показала, что с eval код исполняется быстрее, нежели без него: да, на компиляцию запроса нужно больше времени, однако это делается один раз, а сам запрос генерится в более эффективный JS код, который значительно быстрее работает и кстати, запросы кешируются тоже.

Ок, перечитаю)

B~Vladi 29.10.2012 22:16

Можно прокинуть функции аргемунтами. Хотя тебе виднее :)

kobezzza 29.10.2012 22:21

Цитата:

Сообщение от B~Vladi (Сообщение 212916)
Можно прокинуть функции аргемунтами. Хотя тебе виднее :)

Я думал про это, даже какуе то реализацию накидывал, но она мне почемуто не понравилась, хотя мб и вернусь к этой идеи)

devote 29.10.2012 22:22

Цитата:

Сообщение от tenshi
я и не юзаю) но ты тратишь своё время впустую

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

tenshi 29.10.2012 22:33

> я тупо

вот тут беда. пишешь код для себя, а суёшь его в проекты, которые разрабатываешь не только ты.

> Интерпретатор весит очень мало, килобайта 4

да всё оно по отдельности мало весит, только вот конечное приложение получается почему-то под мегабайт

> DROP делать нет смысла, для этого есть специальный метод.

http://xkcd.ru/327/

> Я юзаю eval в 3-х местах на 7к строк кода

а если вынести его в функцию myeval, то вообще в одном месте использоваться будет)

> скорость работы от такого приёма падает на 1-2%.

значит что ты ты делал не правильно

> делаешь это слишком толсто

оччёрт, еда меня раскусила ._."

tenshi 29.10.2012 22:36

Цитата:

Сообщение от B~Vladi (Сообщение 212910)
Кстати, на счет eval-ов. Еще один аргумент в пользу new Function

не-не-не, лучше и без new Function обойтись. не за чем поднимать js-интерпретатор несколько раз

B~Vladi 29.10.2012 22:38

Если ТС это интересно, я смотрю на его либу как на дополнение к своему шаблонизатору. Что-то вроде XSL для JS-объектов, который будет использоваться в коде шаблона. Я не имею ввиду нативное встраивание, а как подключение дополнительного инструмента. Если он не будет сильно сказываться на производительности ;)

B~Vladi 29.10.2012 22:43

tenshi, задачи бывают разные и во многих ситуациях "поднятие интерпретатора" во много раз увеличивает производительность.


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