如何提高benchmark.js中各个测试的准确性

时间:2016-06-05 19:45:25

标签: javascript benchmark.js

我有这个jsfiddle,我试图测量一些我感兴趣的操作的性能,并且我不断地为各个测试获得不同的准确性。例如,这是我的上次运行:

using extra assign x 662 ops/sec ±9.20% (57 runs sampled)
using no extra assign x 694 ops/sec ±4.31% (47 runs sampled)
Fastest run(s) is(are): "using no extra assign,using extra assign"

很难衡量具有不同准确度的结果,在某些情况下可能与±30.0%一样多,因此我希望能够为准确度设置可接受的边界。

我试图调整选项,但它们似乎没有影响任何事情,或者我做错了什么。我做错了什么?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

minSamples选项添加到每个基准测试并将其设置为更高级别将迫使benchmark.js为每个基准测试采取更多样本。拥有更大的样本集应该会减少误差范围(MOE)。使用样本量来确定准确度和测试持续时间之间的理想平衡。

这是使用您在jsfiddle中提供的代码的示例:

suite
.add('using extra assign', test1, { minSamples: 200 })
.add('using no extra assign', test2, { minSamples: 200 })

根据这些变化,产生以下结果:

using extra assign x 642 ops/sec ±0.74% (240 runs sampled)
using no extra assign x 637 ops/sec ±0.44% (258 runs sampled)
Fastest run(s) is(are): "using extra assign"

答案 1 :(得分:0)

如果在运行基准测试时使用计算机执行其他操作,则会有很大的差异。为此,请运行两次基准测试:第一次运行基准测试时,浏览网页,在附近拖动GUI窗口,编译一些代码。第二次,关闭所有使用大量CPU周期的应用程序,启动基准测试,然后关闭计算机,直到完成。您会看到巨大的不同。

要做的另一件事是以更高的优先级启动基准测试。在基于Unix / Linux =的计算机上,使用nice。例如,在我的macOS机器上,我运行:

nice -10 node comparativeBench.js