benchmark.js:如何显示/读取结果(ops / sec)?

时间:2014-11-07 01:06:21

标签: javascript benchmark.js

我能够成功创建和运行基准测试套件,但不知道如何获得每个输出的基准值,this.filter('fastest').pluck('name')中的onComplete给出了最快操作的名称,但我想要测试套件中每个函数的ops/sec值。怎么弄?

1 个答案:

答案 0 :(得分:6)

onComplete回调中,您可以通过this关键字(将引用当前BenchmarkSuit对象)访问您的基准测试,如下所示:

var bench1 = this[0];
var bench2 = this[1];
...
var benchN = this[N-1];

Eeach benchBenchmark的实例。因此,您可以获得所需的任何信息(请参阅Benchmark.prototype)。要获得ops/sec值,请使用基准的.hz属性。一个更好理解的小例子:

new Benchmark.Suite()
.add('test1', function() {
    // some code
})
.add('test2', function() {
    // some code
})
.on('complete', function() {
    var benchTest1 = this[0]; // gets benchmark for test1
    var benchTest2 = this[1]; // gets benchmark for test2

    console.log(benchTest1.hz); // ops/sec
    // benchmark info in format: 
    // test2 x 1,706,681 ops/sec ±1.18% (92 runs sampled)
    console.log(benchTest2.toString()); 

    console.log('Fastest is ' + this.filter('fastest').pluck('name'));
})
.run();