javascript - 我应该多次运行 Google Closure Compiler 以进一步优化我的代码吗?
问题描述
我尝试在高级优化模式下将以下 JavaScript 代码放入Closure Compiler Web 界面:
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 Compiler时,它设法生成了一个更短的版本:
console.log(2);
这是否意味着我应该在我的代码上多次运行 Closure Compiler 以确保获得最佳优化?这样做有什么潜在的问题吗?
解决方案
ADVANCED
使用优化第二次通过编译器运行编译后的代码是非常危险的。编译器不保留原始类型注释,并且代码打印机将在可能的情况下将括号访问转换为点访问(obj['foo']
到obj.foo
)。然后,输出代码很可能会使编译器做出的基本假设无效。
可以使用SIMPLE
优化通过编译器重新运行输出代码。但是,您很可能会看到使用这种方法的大幅递减收益。换句话说:可能几乎没有改善。
推荐阅读
- google-chrome-devtools - 有没有办法隐藏 Chrome devtools 中的顶部菜单?
- c - 访问库中可执行文件中定义的全局变量时重定义错误
- javascript - 动态更改已在 JavaScript 中创建的实例的值
- python - PyTorch:tensor.cuda() 和 tensor.to(torch.device("cuda:0")) 有什么区别?
- ios - 如何向 UITextView 中的属性文本添加自定义操作?
- datepicker - 需要在 Materialise Date Picker 中隐藏当年的未来月份。当我从选择器更改年份时,所有月份都应该出现
- spring - 加入 Fetch 与右表上的条件
- django - 拒绝在框架中显示,因为它在 django 应用程序中将“X-Frame-Options”设置为“拒绝”
- java - 在 Java 中不使用类创建对象
- kubernetes - 基于 Kubernetes 中指定的传入端口的负载均衡(本地)