我有一个项目我正在为我的公司工作,现在我需要决定我应该使用哪个JS引擎。目前我的选择是Spidermonkey或Rhino。
我主要担心的是性能和可扩展性,我想知道是否进行了性能测试以比较两个引擎?
我发现谷歌搜索这个问题比我预期的更难。
先谢谢你的帮助,Ben。
答案 0 :(得分:10)
我经常在Rhino和Spidermonkey上运行V8和Sunspider基准测试(免责声明:我是Rhino项目的提交者)。目前的Rhino版本(1.7R3)仍然比Spidermonkey慢一点,但最近的git快照已经很好地赶上了。 (请注意,我说的是没有Jaegermonkey或其他JIT的解释Spidermonkey - 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版本是使用标准指令构建的几个月的快照。
答案 1 :(得分:3)
我不知道比较两者的任何基准,但根据我的经验,SpiderMonkey的速度更快。 如果性能是唯一的考虑因素我会选择,因为V8不是一个选项。
我使用的是Rhino(实际上RingoJS,它基于Rhino并包含一个CommonJS实现和相当多的有用库),因为它足够快并且(根据我的经验)还有一个更成熟的集合可用的库/框架。它还可以直接与Java库连接,因此可以获得大量代码。
你还提到了可伸缩性,Rhino可能实际上有优势,因为它对多线程有很好的支持。 Ringo实现了一个稍微增强的Web worker API。
我不知道SpiderMonkey的任何多线程库,但它们可能存在。