Тест:
Инварианты:
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-движка, объясните его.