Должен ли я запустить Google Closure Compiler несколько раз, чтобы оптимизировать мой код? - PullRequest
0 голосов
/ 10 февраля 2019

Я попытался вставить следующий код JavaScript в веб-интерфейс Closure Compiler в расширенном режиме оптимизации:

function f(some_object) {
  if (some_object.foo == 1) {
    console.log(some_object.bar);
  } else {
    alert(some_object.bar);
  }
}

var my_object = {foo: 1, bar: 2};
f(my_object);

Сгенерирован следующий скомпилированный код:

var a = {b:1, a:2};
1 == a.b ? console.log(a.a) : alert(a.a);

Но когда я поместил скомпилированный код обратно в компилятор Closure , ему удалось создать еще более короткую версию:

console.log(2);

Означает ли это, что я должен запускать компилятор Closure несколькораз в моем коде, чтобы убедиться, что я получаю наилучшую возможную оптимизацию?Есть ли потенциальные проблемы с этим?

1 Ответ

0 голосов
/ 15 февраля 2019

Очень опасно запускать скомпилированный код обратно через компилятор во второй раз, используя ADVANCED оптимизацию.Компилятор не сохраняет исходные аннотации типов, и принтер кода преобразует доступ в скобках в точечный доступ, где это возможно (obj['foo'] в obj.foo).В этом случае выходной код вполне мог бы сделать недействительными базовые предположения, сделанные компилятором.

Можно было бы перезапустить выходной код обратно через компилятор, используя SIMPLE оптимизацию.Однако при таком подходе вы, скорее всего, увидите большие убывающие доходы.Другими словами: вероятно, очень небольшое улучшение.

...