是否有意义来缩小在使用的NodeJS代码?(Does it make sense to minify

2019-06-27 05:50发布

我在想,既然Clojure的编译器和UglifyJS不仅为大小优化代码,但也为业绩(虽然我觉得大小是主要的优先级),将我的Node.js应用程序的运行速度,如果它是精缩? 我知道这可能取决于从应用程序,但我问这一般。

Answer 1:

在节点,主要加工的成本是I / O操作,而不是实际的JavaScript本身。 因此,例如:

fs.readFile(myFile, function (err, data) {
    processTheFile(data);
});

在这里,调用之间的差距readFile和回调被解雇将超过的时间长度回调需要更长的时间几次。 (如果是倒过来,你可能不应该使用节点。)

因此,优化processTheFile速度的功能是没有意义的,因为你是在救一个非常非常少数的一小部分。



Answer 2:

缩小可以提高性能。

节点的V8优化的编译器内联根据一些启发式功能。 微小影响这些启发式。 这可能会导致以前不内联函数内联。 由于内联函数通常执行得更快,这可能导致性能改进。

节点9.0+ / V8 6.2+(涡扇) - 小的性能改进

如果函数的未经优化的字节大小小于500,它会被内联。 缩小通常会降低AST(抽象语法树)节点计数。 由于字节码是直接从AST生成的,我们可以预期在字节大小有所减少为好。

来源: [涡扇]用字节大小的内联启发。

节点8.3+ / V8 5.9+(涡扇)→小的性能改进

如果函数的AST节点计数小于196,它会被内联。 缩小通常降低AST节点计数。

来源: [涡扇]不要顾及光源的尺寸内联启发。

节点8.2和前/ V8 5.8(曲轴)和前→主要性能改进

如果函数的字符数-包括空格和注释-是小于600 ,它会被内联。

比方说,我们有一个函数,它的长度超过600个字符:

function f() {
  // A long comment... bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
  return 1;
}

微小降低这对function f(){return 1}

如果我们现在所说的这两个变种n次,比较原始的性能和缩小的功能,我们得到以下结果:

显然,精缩函数执行快一倍多

另请参见: #NodeJS:快速优化建议



Answer 3:

基于它确实有很大的意义以下两个链接:

快速优化建议

于2017年2月3日试运行



Answer 4:

不再是真实的。

是的,Node6现在基于V8 5.1,其中使用涡轮风扇。 由于V8团队说( https://bugs.chromium.org/p/v8/issues/detail?id=3354 ),他们放弃了字符计数触发内联。

https://medium.com/@c2c/yes-node6-is-now-based-on-v8-5-1-7a645eb9992b https://bugs.chromium.org/p/v8/issues/detail?id= 3354



文章来源: Does it make sense to minify code used in NodeJS?