Тест:
Инварианты:
var f = function() { };
var g = function() { return this; }
Тесты:
Ниже в порядке ожидаемой скорости
-
new f; -
g.call(Object.create(Object.prototype)); -
new (function() { }) -
(function() { return this; }).call(Object.create(Object.prototype));
Фактическая скорость:
-
new f; -
g.call(Object.create(Object.prototype)); -
(function() { return this; }).call(Object.create(Object.prototype)); -
new (function() { })
Вопрос:
- Когда вы меняете
fиgна встроенные анонимные функции. Почему тестnew(тест 4.) медленнее?
Update:
Что конкретно заставляет new быть медленнее, когда f и g являются встроенными.
Мне интересны ссылки на спецификацию ES5 или ссылки на исходный код JagerMonkey или V8. (Не стесняйтесь связывать АО и Караканский исходный код. О, и команда IE может течь источник Чакры, если они хотят).
Если вы связываете источник JS-движка, объясните его.