谷歌关闭改变了效率

时间:2012-04-04 20:44:32

标签: google-closure-compiler

我有一个JavaScript文件,我通过Google Closure编译器运行,它将名称on发送到za,从长度的角度来看,这显然不是更有效。事实上,它是否有某种原因更有效(可能是因为使用了字母),还是只是几个随机字母?

例如,我可以想象当Gzipped时za可能比on更易于压缩,但很有可能它只是几个随机字母。

2 个答案:

答案 0 :(得分:3)

在使用http://closure-compiler.appspot.com/home之后,似乎编译器只是开始重命名变量而不管它们以前的名字。它保持在'a'并通过'b'等等...它似乎并不关心变量名的当前长度,但它将确保整体大小与之前相同或更小。在某些情况下,如果使用高级优化设置,变量可能会从代码中重构。

通过让编译器处理变量的命名,可以确保它们之间没有任何冲突。如果它试图保留现有的变量名称,则必须单独跟踪它并维护一个列表进行比较。

缩小代码的另一个好处是混淆代码库。当然有人可以弄明白,如果他们真的想要,但通过使变量名称编程,它使得更难弄清楚其含义。

如果你真的想通过组合&缩小代码我建议查看Google Chrome Canary http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

的源地图功能

答案 1 :(得分:1)

  

是否有某种原因实际上它更有效(可能是因为使用了字母)

没有

  

或只是几个随机字母?

差不多。 AFAIK,Closure Compiler(以及其他JS minifiers)系统地重命名变量,目标是总体上使用较少的字符,而不查看它们已被命名的内容。