Joã*_*imo 47 javascript minify google-closure-compiler node.js uglifyjs
我很想知道,因为Clojure Compiler和UglifyJS不仅可以优化代码大小而且还可以优化性能(虽然我认为大小是主要优先级),如果我的node.js应用程序被缩小,我的运行速度会更快吗?我知道它可能取决于应用程序,但我一般都会问这个问题.
le_*_*e_m 38
缩小可以提高性能.
Node的V8优化编译器根据一些启发式内联函数.缩小会影响这些启发式.这可能会导致以前未内联的函数内联.由于内联函数通常执行得更快,因此可以提高性能.
如果函数的未优化字节码大小小于500,则将内联.缩小通常会减少AST(抽象语法树)节点计数.由于字节码是直接从AST生成的,因此我们可以预期字节码大小会有所减少.
来源:[Turbofan]使用字节码大小进行内联启发式扫描.
如果函数的AST节点数小于196,则将内联.缩小通常会减少AST节点数.
如果函数的字符数 - 包括空格和注释 - 小于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;
}
Run Code Online (Sandbox Code Playgroud)
缩小将此缩小为function f(){return 1}.
如果我们现在调用两个变体n次并比较raw和minified函数的性能,我们得到以下结果:
显然,缩小功能的执行速度是原来的两倍多.
另请参阅:#NodeJS:快速优化建议
Nat*_*nes 29
在节点中,主要的处理成本是I/O操作,而不是实际的JavaScript本身.例如:
fs.readFile(myFile, function (err, data) {
processTheFile(data);
});
Run Code Online (Sandbox Code Playgroud)
这里,调用readFile和被触发的回调之间的差距将比回调所花费的时间长几倍.(如果是相反的话,你可能不应该使用节点.)
因此,优化processTheFile速度功能毫无意义,因为您节省了一小部分非常小的数字.
不再真实了。
是的,Node6 现在基于 v8 5.1,它使用 TurboFan。正如 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
| 归档时间: |
|
| 查看次数: |
15975 次 |
| 最近记录: |