5

我有一个正在为我的公司工作的项目,现在我需要决定应该使用哪个 JS 引擎。目前我的选择是蜘蛛猴或犀牛。

我主要关心的是性能和可扩展性,我想知道是否进行了比较两个引擎的性能测试?

我发现谷歌搜索这个问题比我预期的要难。

提前感谢您的帮助,本。

4

2 回答 2

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 毫秒,Rhino master 的数字是 2250 毫秒,rhino_1_8 分支的数字是 2180 毫秒,Spidermonkey 的数字是 1390 毫秒(这是毫秒,所以越低越好)。

所有 Rhino 基准测试都是在 Oracle JDK 1.7.0 上进行的,带有服务器 VM 和默认设置,并经过几轮预热。通过最近的 Rhino 快照,您可以使用 ant benchmark-* 目标轻松地自己运行基准测试。我的 Spidermonkey 版本是使用标准指令构建的几个月前的快照。

于 2012-01-30T21:15:07.277 回答
3

我不知道比较这两者的任何基准,但根据我的经验,SpiderMonkey 更快。如果性能是唯一的考虑因素,我会考虑,因为 V8 不是一个选项。

不过我使用的是 Rhino(实际上是RingoJS,它基于 Rhino 并包含一个 CommonJS 实现和一些有用的库),因为它足够快并且(再次,根据我的经验)有一组更成熟的库/框架可用。它还可以直接与 Java 库交互,因此有大量代码可用。

您还提到了可扩展性,Rhino 实际上可能在这方面有优势,因为它对多线程有很好的支持。Ringo 实现了稍微增强的 Web Worker API。

我不知道 SpiderMonkey 的任何多线程库,但它们可能存在。

于 2012-01-30T15:23:21.690 回答