Для вызова этой функции в Chrome требуется менее чем в три раза больше, чем для вызова пустой function f(){}
, поэтому я думаю, что вы не получите много пользы от переписывания.
Проблема в служебной нагрузке, а не в формуле. Может быть, это может помочь сохранить что-то более интересное ...
EDIT
Чтобы протестировать, я просто открыл консоль в Chrome (ctrl-shift-C) и создал функцию синхронизации с
timeit = function(f) {
var start=(new Date).getTime();
for (var i=0; i<100000; i++)
f(1);
return (new Date).getTime() - start;
}
, а затем протестировал его с function(){}
и с вашей функцией.
Оказывается, однако, что этот тип теста очень ненадежен. Я даже получил абсурдные результаты, когда timeit(f1)
сообщает 200, а timeit(f2)
сообщает 120 (большая разница), но f1
и f2
действительно были двумя переменными, связанными с одним и тем же функциональным объектом. Также была разница между timeit(f)
и timeit(function(x){ return Math.cos(x); })
, даже когда f
была именно этой функцией.
Может быть, есть объяснение тому, как взаимодействуют V8 и консоль javascript, но я не знаю, что это такое.
Также с FF4 этот подход дает очень ненадежные результаты ...