我正在尝试使用Benchmark.js执行示例性能基准测试。
这是我写的:
var Benchmark = require('benchmark');
var arr = []
benchmark = new Benchmark('testPerf',function(){
arr.push(1000);
},
{
delay: 0,
initCount: 1,
minSamples: 1000,
onComplete : function(){ console.log(this);},
onCycle: function(){}
});
benchmark.run();
现在就像我们在JUnitBenchmarks中所做的那样:
@BenchmarkOptions(clock = Clock.NANO_TIME, callgc = true, benchmarkRounds = 10, warmupRounds = 1)
在这里我也想在Benchmark.js中声明
benchmarkRounds
和warmupRounds
计数。我认为warmupRounds
映射到initCount
吗?以及如何设置准确的循环次数/基准迭代次数?或者,如果我们还有其他可以处理它的优秀JavaScript库也可以工作。
最佳答案
随着浏览器变得越来越快,在JavaScript基准测试中使用固定的迭代计数是有风险的:we might get zero-time results eventually。
Benchmark.js不允许提前设置回合/迭代次数。相反,它会一遍又一遍地运行测试,直到可以认为结果相当准确为止。您应该 checkout code reading by Monsur Hossain。文章中的一些要点:
Benchmark.prototype.cycles
中。 Benchmark.prototype.stats.sample
是采样期间每个周期的结果数组。 Benchmark.prototype.count
是采样期间的迭代次数。