Как работает Closure Compiler? - PullRequest
       27

Как работает Closure Compiler?

0 голосов
/ 03 января 2011

Мне интересно, как работает Google Closure Compiler. Могу ли я, например, заставить его преобразовывать вызовы функций, например:

if (MyApp.isArray(...)) {
    // foobar
}

к фактической реализации:

if ((typeof sthing === 'Object' && sthing.constructor.toString().indexOf("Array") !== -1))

Я спрашиваю об этом, потому что у меня есть много оберток, которые связывают некоторые функции, и я хотел бы, чтобы Closure Compiler преобразовал их обратно в один вызов функции.

На самом деле, один дополнительный вызов функции делает приложение заметно медленнее?

Ответы [ 3 ]

2 голосов
/ 03 января 2011

На самом деле, делает один дополнительный вызов функции сделать приложение заметно медленнее?

Скорее всего, нет, но если вы действительно хотите знать, вам просто нужно попробовать два разных примера кода и посмотреть, есть ли разница. Существует множество факторов (ваша система, ваш браузер, функция, которую вы вызываете и т. Д.), Поэтому тест - это путь. Я бы предложил Firebug для профилирования.

2 голосов
/ 10 марта 2011

Компилятор Closure (в расширенном режиме) встроит однострочные функции или функции, которые вызываются ровно один раз.

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

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

Я слышал, как люди говорили, что однострочные функции long не встроены, но я всегда видел их встроенными.

1 голос
/ 03 января 2011

Я не думаю, что в любом случае есть Closure Compiler, который сделает это за вас. Его главная задача - минимизировать источник, и, насколько я могу судить, он будет вызывать только такие встроенные вызовы функций, если на самом деле это будет короче.

...