我们都知道/阅读/听说过Google's V8引擎的荣耀,并且多年来它使node.js成为美丽的存在。但是现在我们有了选择Microsoft's ChakraCore和Google's V8作为首选JavaScript引擎的选项,因此我想知道是否有人有任何证据或测试案例表明其中一个对于nodejs更高效。请支持您的答案以一些事实和结果,因为某人不应该只因为他/她喜欢Microsoft而使用/选择Chakra,同样适用于V8和Google。
谢谢。
它们有什么不同?
大多数现代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引擎将使微软能够自由创新。一个早期的创新是时间旅行调试。
它们有何不同?
这个问题有点太广泛了,目前无法在此格式中回答,但我会尝试回答它。
谷歌的V8引擎具有所有必要的功能,可以使其性能非常快速。因此,基本上这是Node.js的基础,并且它将在长期内保持存在。
另一方面,微软的ChakraCore也在积极开发,它具有两层结构(无法命名),其中包括Chakra Shim和ChakraCore。
需要注意的是,Chakra Shim实现了最重要的V8 API,以便底层JavaScript引擎的更改对于Node.js和其他为V8编写的本机插件模块是透明的。
对于 OP:也要看看 webassembly。