Показать сообщение отдельно
  #53 (permalink)  
Старый 29.10.2012, 22:03
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 29.10.2012 в 22:12.
Ответить с цитированием