当ChakraCore被用作Node.js的JS引擎时,与Google的V8相比,它是否提供任何性能优势?

23
我已经编辑了我的问题,将场景缩小到仅涉及Node.js,请重新打开它。这是一个有用的问题,适当的答案可能在未来出现,而不是像ChakraCore一样还很年轻。但是这个问题是有效的,应该存在。
我们都知道/阅读/听说过Google's V8引擎的荣耀,并且多年来它使node.js成为美丽的存在。但是现在我们有了选择Microsoft's ChakraCore和Google's V8作为首选JavaScript引擎的选项,因此我想知道是否有人有任何证据或测试案例表明其中一个对于nodejs更高效。请支持您的答案以一些事实和结果,因为某人不应该只因为他/她喜欢Microsoft而使用/选择Chakra,同样适用于V8和Google。
谢谢。

不,我最近看到有些人在甚至读问题之前就急于投反对票。让我编辑一下...抱歉... - Suman Barick
@Jai,我应该把它拿下来吗?实际上,我在Stack Overflow上经常看到详细和逐点的真正有教育意义的答案。所以,我真的希望在这里得到一些比较性的见解... 不是要问任何人的最喜欢的JS引擎,而是真正的英雄 :P - Suman Barick
你不必担心JS引擎,为什么要了解V8或ChakraCore呢?这些都是JS引擎,一个很好,另一个正在努力变得更好。 - Jai
是的,这不会以任何方式影响我的日常工作。现在只是出于好奇。但如果我可以说,这也是为了做好准备,以便在有一天(如果有的话)我被要求在V8和Chakra之间选择一个时,我有一些事实来做决定。 - Suman Barick
1
那么就必须对两个引擎进行测试,无法确定是否有人已经测试过它。但是我一定会更新答案并进行测试。 - Jai
@Jai,这正是我在寻找的... :) 我也正在从他们(微软)的 Github 存储库中自学。 - Suman Barick
2个回答

25

它们有什么不同?

大多数现代JavaScript引擎将所有JavaScript代码转换为高效的机器码 (源代码),而Chakra具有智能和高性能的解释器。这个解释器有智能启发式,可以确定是否将您的代码编译成机器码或解释执行。解释器通常启动更快并需要更少的内存来运行,这使得Chakra在资源受限的环境(如Raspberry Pi)中非常有吸引力。

2015年,微软推出了支持使用Chakra的Node.js,以便开发人员针对Windows IoT Core平台进行开发 (Windows IoT Core platform)。最近,ChakraCore的开源使得微软可以在开放中进行开发,并更好地与Node.js的发布计划保持一致。

在最近的JavaScript Air episode中,Steve Lucco提到Chakra团队计划认真对待社区并且重视他们的意见,以便引导引擎的发展方向,并给予社区更多的参与度,比如说,在V8的发展方向上,社区的影响力将会得到很大程度的提高。

微软致力于构建一个内存高效的JavaScript引擎,实际上已经建立了一个具有竞争力的快速引擎。在this article写作时,Chakra在某些情况下表现优异,超过了V8。


(来源: msecnd.net)

基准测试并不一定代表实际性能,但是VM性能的竞争最终将会为所有VM用户带来更快的Node.js运行时。

值得一提的是,拥有自己的JavaScript引擎将使微软能够自由创新。一个早期的创新是时间旅行调试


2
我的问题可能会因为大量关闭投票而被关闭。但是这个答案很有帮助,非常接近我所寻找的内容。同时感谢指出基准测试比较。我点赞了 :) @Alex Booker - Suman Barick
1
@SumanBarick 随意在问题关闭之前接受答案哈哈。很高兴能帮到你! - Alex Booker
V8还有一个解释器:https://www.youtube.com/watch?v=r5OWCtuKiAk - user835611
视频已被设为私人。但是此视频提到了ChakraCore中的时间旅行: https://youtu.be/zGmQR7iBfD4,仍然是公开的。 - Martin

5

它们有何不同?

这个问题有点太广泛了,目前无法在此格式中回答,但我会尝试回答它。

谷歌的V8引擎具有所有必要的功能,可以使其性能非常快速。因此,基本上这是Node.js的基础,并且它将在长期内保持存在。

另一方面,微软的ChakraCore也在积极开发,它具有两层结构(无法命名),其中包括Chakra Shim和ChakraCore。
需要注意的是,Chakra Shim实现了最重要的V8 API,以便底层JavaScript引擎的更改对于Node.js和其他为V8编写的本机插件模块是透明的。

来源:NodeJs-ChakraCore

对于 OP:也要看看 webassembly


1
谢谢提供 WebAssembly 的链接 :) @Jai - Suman Barick
Chakracore能够执行任何JavaScript代码吗? - Learning-Overthinker-Confused

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接