为你的Node利用程序选中最好的JS引擎
Node.js 正在飞速的开展。当前 Node.js 8 已经公布。同时,基于 ChakraCore 的 Node.js 版本也正在积极开发中。
【视频教程引荐:node js教程 】
原文是:The recent Node.js v8 version (not to be mistaken with V8, the JavaScript engine) has just been published.
原作者使用了 Node.js v8 version 这个词,为此作者专门在括号中说明了这里的 V8 不是 javascript 引擎 V8,而是 Node.js 的版本。但是在 Node.js 官方博文 Node v8.0.0 (Current) 中有一段注释:
Note that, when referring to Node.js release versions, we have dropped the "v" in Node.js 8. Previous versions were commonly referred to as v0.10, v0.12, v4, v6, etc. In order to avoid confusion with V8, the underlying JavaScript engine, we've dropped the "v" and call it Node.js 8.
请留意,当援用 Node.js 公布版本时,我们已经在 Node.js 8 中删除了 “v”。之前的版本平常被称为 v0.10,v0.12,v4,v6 等。为了不与 V8 JavaScript 引擎混淆,我们舍弃了 “v” 并将其称为 Node.js 8。
所以,Node.js v8 版本应当直接称为 Node.js 8。
由于 Node.js 使用的 JavaScript引擎不知道什么时候会引入新功效,开发者们都像明白的知道不一样引擎在机能方面的机能好坏。
我们对以下几个 Node.js 版本做了机能评估:
- Node.js 6.10.1 (V8 5.1.281.95)* Node.js 7.10 (V8 5.5.372.43)
- Node.js 7.10 使用 --turbo --ignition 参数 (V8 5.5.372.43)
- Node.js 8.0 (V8 5.8.283.41)
- Node.js 8.0 使用 --turbo --ignition 参数 (V8 5.8.283.41)
- Node.js 8.0 (ChaKraCore 2.0.0.0) (使用 2 种不一样的构建版本)
你可以通过这个简便的 可视化工具 查看不一样版本关于不一样特性的机能。
在这些结果中,假如你使用的是 Node.js 8,你还可以查看开启 --turbo --ignition
参数后的 javascript 机能。
Context
虽然 V8 是 Node.js 使用的默许 JavaScript 引擎,但是 Node.js 供给了一个通用的平台,同意开发者选中不一样的 JavaScript 引擎。
Node.js 8 的公布非常令人兴奋,并且是社区内的一件大事。该平台已附带一套全新功效。此外,开发者最关注的就是机能。
理解哪种 JavaScript 引擎最适合运转利用程序将成为一项非常有用的技艺。 在本文中,我们将看到 V8 和 ChakraCore 的不一样版本在机能方面的好坏。
方式
要比力不一样 Node.js 版本之间的基准测试,我选中了有代表意义的 35 种 JavaScript 代码模式。他们中的大多数都是从 Colin Ihrig’s ‘will it optimize’ 的 repo 中猎取的。这些模式已经在前面的文章(Optimize your Node app by simply upgrading Node.js)中计议过了。
关于每个模式,离别使用了每个不一样版本的 Node.js 运转 10 次、100 次、1000 次、10000次和 10000 次。 通过同意这些代码,我们呢可以理解每个引擎怎样停止运转经常规优化和热函数(hot function)优化。
基准测试没有思考垃圾收集(GC)事件的数目。 这意味着假如修改分配给每个进程的内存,则实验的结果大概会不一样。
结果
在 这个页面 可以查看完全的测试结果。通过剖析这个结果,我们可以发明 ChakraCore 的 Node.js 版本比基于 V8 的版本慢。
此外,在大多数状况下,随着时间的迁移 V8 变得越来越高效。Ignition 和 Turbofan 优化架构很显著地晋升了机能。 Node.js 8 随 V8 5.8 公布,但是 默许并没有启用。 Node.js 的将来版本将随着启用了 Ignition 和 Turbofan 的 V8 5.9(也大概是 5.6)一起供给。
结论
这个基准测试非常有味,我方案在未来增添更多的 Node.js 版本和更多的代码模式。作为Sqreen 的 Node.js 工程师,我非常关怀机能。
(译注:后面还有 4 端内容,大部分都是原作者的广告,就不翻译了)
最后引荐作者开发的这个强大的机能可视化对照工具:Picking the best JS engine for your Node app’s performance 还有我的讲座:前端程序员应当懂点 V8 知识。