10

我对 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 运行了这些示例,几乎没有区别

除了节省字节之外,JavaScript 的编译还能让它更快或更慢吗?

4

2 回答 2

17

是的,从Google Closure Compiler之类的应用所应用的转换的意义上说,编译可以使您的脚本运行得更快。考虑这个非常简单的例子:

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

编译为:

var x="hello james";

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

来自 Closure 文档(强调添加):

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

编辑

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

于 2012-11-20T13:07:27.017 回答
1

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

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

于 2012-11-20T13:08:32.520 回答