资讯专栏INFORMATION COLUMN

为您的 Node 性能选择最佳的 JS 引擎

huaixiaoz / 775人阅读

摘要:为了避免与引擎混淆,我们放弃了并将其称为。虽然是使用的默认引擎,但是提供了一个通用的平台,允许开发者选择不同的引擎。的发布非常令人兴奋,并且是社区内的一件大事。此外,开发者最关注的就是性能。基准测试没有考虑垃圾收集事件的数量。

本文翻译自 Picking the best JS engine for your Node app’s performance,中文版首发在我的知乎专栏 V8 源码及周边。

tl;dr

Node.js 正在飞速的发展。目前 Node.js 8 已经发布。同时,基于 ChakraCore 的 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 知识。

欢迎关注我的公众号,关注前端文章:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83511.html

相关文章

  • CG Pipeline: 最佳图形数据库性能对比, CG生产数据服务

    我们选择了四个较流行的图形数据库进行实验对比。测试中会提供Python 代码段以显示如何使用每个数据库,之后我们将运行一个快速的基准测试,我们将在i7-6700 CPU @ 3.40GHz 上运行10 000 次我们的示例查询,然后比较各个图形数据库所需的时间及评价其性能。 以下为四种图形数据库性能对比原创总结,详细对比了各个数据库的优缺点,以及原文作者做出的总结推荐: 图形数据库 语言 时间...

    jackwang 评论0 收藏0
  • 2017-06-18 前端日报

    摘要:前端日报精选精读高阶组件知乎专栏是如何重新定义前端开发的知乎专栏为您的性能选择最佳的引擎知乎专栏中的尺寸单位掘金一种生成雪碧图的懒惰姿势中文第期编写现代代码周刊第期的平凡之路我们到底可以通过多少种方式修改元素样式掘金 2017-06-18 前端日报 精选 精读 React 高阶组件 - 知乎专栏React 是如何重新定义前端开发的 - 知乎专栏为您的 Node 性能选择最佳的 JS 引...

    Yang_River 评论0 收藏0
  • 前端技术日志 | 19年8月21日 | 新 React DevTools 介绍

    摘要:前端技术日新月异,在你巩固底层技能的同时,别忘了还要跟上前沿技术的发展步伐。你可以从谷歌的博客中了解更多相关信息。令我惊讶的是,谷歌所有地方在非常简单的页面上都没有搜索栏。快速发布预览零配置打包工具。快速启动新的工具。 Web 前端技术日新月异,在你巩固底层技能的同时,别忘了还要跟上前沿技术的发展步伐。 本期刊专注于 Web 前端前沿技术,收集的内容来自国外各大前端技术周刊,这里把值得...

    pepperwang 评论0 收藏0
  • 前端技术日志 | 19年8月21日 | 新 React DevTools 介绍

    摘要:前端技术日新月异,在你巩固底层技能的同时,别忘了还要跟上前沿技术的发展步伐。你可以从谷歌的博客中了解更多相关信息。令我惊讶的是,谷歌所有地方在非常简单的页面上都没有搜索栏。快速发布预览零配置打包工具。快速启动新的工具。 Web 前端技术日新月异,在你巩固底层技能的同时,别忘了还要跟上前沿技术的发展步伐。 本期刊专注于 Web 前端前沿技术,收集的内容来自国外各大前端技术周刊,这里把值得...

    zhiwei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<