JavaScript 引擎性能基准

JavaScript engine performance benchmark

我使用以下简单程序简要测试了这三个引擎 (rhino/spidermonkey/v8):

function p(n) {
    for (var i = 2;i * i <= n;i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

var sum = 0;
for (var k = 2;k < 10000000;k++) {
    if (p(k)) {
        sum++;
    }
}
print(sum);

并得到如下结果:

$ time rhino -O 9 sample.js
664579

real    0m40.495s
user    0m40.793s
sys     0m0.180s

$ time js sample.js
664579

real    0m9.465s
user    0m9.477s
sys     0m0.000s

$ time d8 sample.js
664579

real    0m8.941s
user    0m8.943s
sys     0m0.000s

虽然 spidermonkey 和 v8 在速度上大致相当,但 rhino 需要更长的时间 即使是最高级别的优化。这里有什么问题吗?

我调查了标准 JavaScript 基准测试,但其中大部分 运行 是在浏览器中进行的测试。任何人都可以 请推荐一个命令行版本来测试核心引擎?

While spidermonkey and v8 are generally comparable in speed, rhino takes significantly longer time even with the highest level of optimization. Is anything wrong here?

这里没有问题。 Rhino 只是很慢,仅此而已。

I've surveyed standard JavaScript benchmarks but most of them run the test in browser. Could anyone please recommend a command-line version to test the core engines?

Sunspider、Kraken 和 Octane 的源代码(例如 v8 测试套件;它包含在 V8 引擎的源代码中)基准可用,因此您可以轻松地在命令行中执行独立测试。