0

0

为你的Node应用程序选择最佳的JS引擎

青灯夜游

青灯夜游

发布时间:2020-09-08 12:25:56

|

2258人浏览过

|

来源于segmentfault

转载

为你的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 的不同版本在性能方面的优劣。

零沫AI工具导航
零沫AI工具导航

零沫AI工具导航-AI导航新标杆,探索全球实用AI工具

下载

方式

要比较不同 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)事件的数量。 这意味着如果修改分配给每个进程的内存,则实验的结果可能会不同。

结果

1.png

这个页面 可以查看完整的测试结果。通过分析这个结果,我们可以发现 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 还有我的讲座:node js教程0。

英文原文地址:https://blog.sqreen.com/javascript-engine-performance/

更多编程相关知识,可访问:node js教程1!!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
node.js调试
node.js调试

node.js调试可以使用console.log()输出调试信息、断点调试和第三方调试工具。详细介绍:1、console.log()输出调试信息,通过在代码中插入console.log()语句,开发人员可以在控制台输出变量的值、函数的执行结果等信息,以便观察代码的执行流程和状态;2、断点调试,可以在代码中设置断点,以便在特定位置暂停代码的执行,观察变量的值和执行流程等。

362

2023.09.19

JavaScript 全栈开发基础(Node.js + 前端)
JavaScript 全栈开发基础(Node.js + 前端)

本专题系统介绍 JavaScript 在全栈开发中的核心知识结构,涵盖 Node.js 基础、Express/Koa 接口构建、前端交互设计、模块化与包管理、数据库连接、前后端数据通信与部署流程。通过完整项目示例,帮助学习者掌握从浏览器到服务器的一体化开发能力,实现真正意义上的全栈入门。

118

2025.11.26

Node.js后端开发与Express框架实践
Node.js后端开发与Express框架实践

本专题针对初中级 Node.js 开发者,系统讲解如何使用 Express 框架搭建高性能后端服务。内容包括路由设计、中间件开发、数据库集成、API 安全与异常处理,以及 RESTful API 的设计与优化。通过实际项目演示,帮助开发者快速掌握 Node.js 后端开发流程。

424

2026.02.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

531

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

6258

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

492

2023.09.01

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 7.3万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 21.7万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 13.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号