Ben*_*dek 5 javascript rhino spidermonkey
我有一个项目,我正在为我的公司工作,现在我需要决定我应该使用哪个JS引擎.目前我的选择是Spidermonkey或Rhino.
我主要担心的是性能和可扩展性,我想知道是否进行了性能测试以比较两个引擎?
谷歌搜索这个问题比我想象的更难.
在此先感谢您的帮助,Ben.
Han*_*fer 10
我经常在Rhino和Spidermonkey上运行V8和Sunspider基准测试(免责声明:我是Rhino项目的提交者).目前的Rhino版本(1.7R3)仍然比Spidermonkey慢一点,但最近的git快照已经很好地赶上了.(请注意,我说的是SpiderMonkey的解释没有的JaegerMonkey或其它即时编译器-的JaegerMonkey是方式更快.)
在V8-benchmarks-v5上,Rhino 1.7R3在我的机器上得分大约为360,Rhino git master 480,Rhino git rhino_1_8分支570,以及最近的Spidermonkey大约540(更高更好).
对于Sunspider 0.9.1,Rhino 1.7R3的数字为8890 ms,Rhino master为2250 ms,rhino_1_8分支为2180 ms,Spidermonkey为1390 ms(这是毫秒,因此更低更好).
所有Rhino基准测试都在Oracle JDK 1.7.0上,具有服务器VM和默认设置,并经过几轮预热.使用最新的Rhino快照,您可以使用ant benchmark-*targets轻松自行运行基准测试.我的Spidermonkey构建是使用标准指令构建的几个月的快照.
我不知道有什么基准可以比较两者,但根据我的经验,SpiderMonkey 更快。如果性能是唯一的考虑因素,我会选择它,因为 V8 不是一个选择。
不过,我使用 Rhino(实际上是RingoJS,它基于 Rhino 并包含 CommonJS 实现和相当多有用的库),因为它足够快并且(根据我的经验)有一组更成熟的库/框架可用。它还可以直接与 Java 库交互,因此有大量可用代码。
您还提到了可扩展性,Rhino 实际上可能在这方面具有优势,因为它对多线程有很好的支持。Ringo 实现了稍微增强的 Web Worker API。
我不知道 SpiderMonkey 是否有任何多线程库,但它们可能存在。