我有这个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%
一样多,因此我希望能够为准确度设置可接受的边界。
我试图调整选项,但它们似乎没有影响任何事情,或者我做错了什么。我做错了什么?
提前谢谢!
答案 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