Показать сообщение отдельно
  #12 (permalink)  
Старый 06.07.2014, 14:35
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Тут суть в том, что она тут тоже компилиться на каждой итерации, поэтому получается, что эвал быстрей
Ещё раз: на Function используется JIT, а на eval нет.

Для тестов:

var a = [], 
     b = [];

var f1 = eval('(function (val) { a.push(val); })');
var f2 = new Function('val', 'b.push(val)');

for (var i = 0; i < 1e6; i++) {
    f1(i);
}

for (var i = 0; i < 1e6; i++) {
    f2(i);
}


Результат будет одинаков, т.к. в обоих случаях элементарное содержимое функций, а если у тебя в теле функций будет сложная логика, вызовы других функций и т.д., то велика вероятность, что встроенный JIT даст значительный профит на варианте с Function, в то время как eval никак не будет обрабатываться.

Т.е. твои тесты - убоги и не несут никакой полезной информации.
__________________
kobezzza
code monkey
Ответить с цитированием