Инструмент для автоматического включения вызовов функций JavaScript? - PullRequest
11 голосов
/ 15 мая 2011

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

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

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

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

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

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

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

0 голосов
/ 15 мая 2011

Позвольте JIT придумать что-то вроде вставки из вас.Встраивание может легко ухудшить производительность, убив производительность кеша.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...