在性能方面缩小/编译JavaScript与未压缩的JavaScript

Blo*_*sie 10 javascript performance compilation

我对JavaScript"编译"的理解是它压缩和缩小你的代码以最终节省字节.

冷凝还是缩小会使JavaScript运行得更快?

请考虑以下示例:

var abcdefghijklmnopqrstuvwxyz = 1;
// vs.
var a=1;
Run Code Online (Sandbox Code Playgroud)
var b = function() {
    // Here is a comment
    // And another
                                                                                                                        // White space
    return true;
};

// vs.

var b=function(){return true}
Run Code Online (Sandbox Code Playgroud)

我通过jsPerf运行这些示例,几乎没有差别.

除了保存字节外,JavaScript的编译能否使它更快或更慢?

Jam*_*ice 17

是的,在Google Closure Compiler等应用程序所应用的转换意义上的编译可以使您的脚本运行得更快.考虑这个非常简单的例子:

var x = ["hello", "james"].join(" ");
Run Code Online (Sandbox Code Playgroud)

这编译成:

var x="hello james";
Run Code Online (Sandbox Code Playgroud)

哪个代码更少,运行速度更快.显然这是一个愚蠢的例子.我希望你自己编写编译版本.但是,它确实证明了Closure能够提高性能以及改进文件大小.

来自Closure文档(重点补充):

Closure Compiler是一个使JavaScript下载和运行更快的工具.它是JavaScript的真正编译器.它不是从源语言编译成机器代码,而是从JavaScript编译成更好的JavaScript.

编辑

有关Closure编译器实际增加 JavaScript文件大小以尝试提供性能改进的示例,请参阅我对此问题的回答.

  • @Blowsie实际上,编译好的javascript可能会占用更少的内存.Google Closure Compiler经常内联函数,这意味着使用的堆栈更少,因此使用的内存更少. (3认同)