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

时间:2012-11-20 13:04:03

标签: javascript performance compilation

我对JavaScript“编译”的理解是它压缩和缩小代码以最终节省字节。

凝聚或缩小会使JavaScript运行得更快吗?

请考虑以下示例:

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

// vs.

var b=function(){return true}

我通过jsPerf with little or no difference运行了这些示例。

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

2 个答案:

答案 0 :(得分:17)

是的,就像Google Closure Compiler这样的变换意义上的编译可以使你的脚本运行得更快。考虑这个非常简单的例子:

var x = ["hello", "james"].join(" ");

编译为:

var x="hello james";

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

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

  

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

修改

对于Closure编译器实例增加JavaScript文件的大小以尝试提供性能改进的示例,请参阅我对this question的回答。

答案 1 :(得分:1)

Minified vs un-minified不应该在执行速度方面有任何差别。唯一的区别可能是缩小版本会更快解析,但即使你有一个非常大的文件(你不会发现你运行的测试有任何差异,它只是小)。

编辑:如果你只做基本的“缩小”,我所做的第一个声明是有效的。如果您正在使用像James所示的Closure编译器,那么如果Clousure工具会优化您的代码可能会有一些差异......