29.10.2012, 21:53
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от tenshi
|
я и не юзаю) но ты тратишь своё время впустую
|
Я так не думаю, либа решает мои проблемы и решает как я хочу, к тому же я пишу её почти столько же, сколько пишу на ЖС и каждая версия тренит мои скилы и знания (в итоге я получаю за свою работу кучу бабла, и могу хоть завтра пойти и купить себе новенький мерседес, чем не профит?) + я тупо получаю от этого кайф.
Сообщение от tenshi
|
вот именно что, фича для галочки. тонны кода, а как сделать банальное - выбрать записи со значением поля "';DROP TABLE users" я так и не нашёл.
|
Интерпретатор весит очень мало, килобайта 4. DROP делать нет смысла, для этого есть специальный метод.
Интепретатор призван заменить цепочки .get().group().stat().sort().get() и т.д. в один простой и очевидный запрос, а для всяких DROP - это просто не нужно.
Сообщение от tenshi
|
да, и я смотрю ты активно используешь eval - это крайне медленно. ибо jit приходится каждый раз напрягаться. использование замыканий даёт лучший результат.
вот, смотри, например, низкоуровневый шаблонизатор без единого эвала http://habrahabr.ru/post/99005/
|
Я юзаю eval в 3-х местах на 7к строк кода - это активно (из них кстати интерпретатор это 15%)? Тем более, что через eval проходит лишь малая часть (80% интерпретатора работает без eval), которая один раз компилится и далее кешируется. Без eval было бы просто тупо больше кода и мне это не нравится, скорость работы от такого приёма падает на 1-2%.
Твои комменты не обоснованы и глупы, а если ты пытаешься троллить, то делаешь это слишком толсто.
Последний раз редактировалось kobezzza, 29.10.2012 в 22:18.
|
|
29.10.2012, 21:57
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Кстати, на счет eval-ов. Еще один аргумент в пользу new Function - V8 применяет внутринние оптимизации для таких функций, а для eval нет. Стоит заменить.
Сори, что ввел в заблуждение в предыдущих постах. Там вместо GCC имелся ввиду V8, конечно же. А я думал, причем тут сжатие)) kobezzza, перечитай тот пост еще раз))
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Последний раз редактировалось B~Vladi, 29.10.2012 в 22:06.
|
|
29.10.2012, 22:03
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от B~Vladi
|
Кстати, на счет eval-ов. Еще один аргумент в пользу new Function - V8 применяет внутренние оптимизации для таких функций, а для eval нет. Стоит заменить.
Сори, что ввел в заблуждение в предыдущих постах. Там вместо GCC имелся ввиду V8, конечно же. А я думал, причем тут сжатие)) kobezzza, перечитай тот пост еще раз))
|
Я юзаю new Function где могу, а eval там, где мне нужно создать функцию в контексте другой, а не в глобальном scope. Т.к. в HAVING условиях могут указываться статистические функции, то я оптимизирую это за счёт того, что все указанные в запросе (в любых местах) функции вычисляются все сразу за один проход, а потом просто раздаются по значению, как раз тут мне и удобно (подчёркиваю, удобно) заюзать доступ к родительскому scope.
Я кстати писал первую версию интепретатора без eval вообще (и без Function), но практика показала, что с eval код исполняется быстрее, нежели без него: да, на компиляцию запроса нужно больше времени, однако это делается один раз, а сам запрос генерится в более эффективный JS код, который значительно быстрее работает и кстати, запросы кешируются тоже.
Ок, перечитаю)
Последний раз редактировалось kobezzza, 29.10.2012 в 22:12.
|
|
29.10.2012, 22:16
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Можно прокинуть функции аргемунтами. Хотя тебе виднее
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
29.10.2012, 22:21
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от B~Vladi
|
Можно прокинуть функции аргемунтами. Хотя тебе виднее
|
Я думал про это, даже какуе то реализацию накидывал, но она мне почемуто не понравилась, хотя мб и вернусь к этой идеи)
|
|
29.10.2012, 22:22
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от tenshi
|
я и не юзаю) но ты тратишь своё время впустую
|
с чего ты взял? ты думаешь если ты не юзаешь, значит другим тоже не надо? Глупая логика.
|
|
29.10.2012, 22:33
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
> я тупо
вот тут беда. пишешь код для себя, а суёшь его в проекты, которые разрабатываешь не только ты.
> Интерпретатор весит очень мало, килобайта 4
да всё оно по отдельности мало весит, только вот конечное приложение получается почему-то под мегабайт
> DROP делать нет смысла, для этого есть специальный метод.
http://xkcd.ru/327/
> Я юзаю eval в 3-х местах на 7к строк кода
а если вынести его в функцию myeval, то вообще в одном месте использоваться будет)
> скорость работы от такого приёма падает на 1-2%.
значит что ты ты делал не правильно
> делаешь это слишком толсто
оччёрт, еда меня раскусила ._."
__________________
.ня
|
|
29.10.2012, 22:36
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
Сообщение от B~Vladi
|
Кстати, на счет eval-ов. Еще один аргумент в пользу new Function
|
не-не-не, лучше и без new Function обойтись. не за чем поднимать js-интерпретатор несколько раз
__________________
.ня
|
|
29.10.2012, 22:38
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Если ТС это интересно, я смотрю на его либу как на дополнение к своему шаблонизатору. Что-то вроде XSL для JS-объектов, который будет использоваться в коде шаблона. Я не имею ввиду нативное встраивание, а как подключение дополнительного инструмента. Если он не будет сильно сказываться на производительности
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
29.10.2012, 22:43
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
tenshi, задачи бывают разные и во многих ситуациях "поднятие интерпретатора" во много раз увеличивает производительность.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
|
|
|
|