Инструмент для автоматического вызова функций JavaScript?

Встраивание вызовов функций JavaScript ускоряет выполнение, а также уменьшает размер кода после gzipping, как описано в этой статье:

http://blog.calyptus.eu/seb/2011/01/javascript-call-performance-just-inline-it/

Однако я не могу найти инструмент, который автоматически обрабатывает исходный файл JS и встраивает в него все (или лучше, выбранные) встроенные вызовы функций. Компилятор Google Closure делает некоторую вставку, но не всегда, и не настраивается.

Спасибо заранее!

Ответ 1

Пусть JIT рисует такие вещи, как вставка из вас. Инкрустация может легко ухудшить производительность, убив производительность кэша.

Кроме того, если вы не определили фактические узкие места, выполнение преждевременной оптимизации, как это, вряд ли стоит того.

Ответ 2

Я почти не верю, что этот "метод" ускоряет любое время выполнения. По крайней мере, не в реальном сценарии. Блог может быть прав о размере кода и Gzipping tho.

В любом случае, я не думаю, что какой-либо Javascript minification/compressor будет делать это много. Причина проста и очень очевидна в приведенном примере. Заменяя вызов функции на фактически функциональный код, вы устанавливаете вещи в другой контекст. Это может оказаться очень злым. Что делать, если родительская функция (-context) уже объявляет и использует переменную с именем foo. Если одна и та же переменная используется в другой функции, вы можете ее перезаписать и вызвать ошибки.

Еще хуже, если есть использование блоков try/catch или eval, которые создают дополнительный контекст с тщательно выраженной "динамической областью" (которая фактически недоступна в ecma-w370 > ). Однако в этом сценарии практически невозможно, чтобы JIT или любая реализация Javascript оптимизировали что-либо.