benchmark.js: как отобразить / прочитать результаты (ops/sec)?

Я могу успешно создать и запустить набор тестов, но не уверен, как получить значения тестов для каждого выхода, this.filter('fastest').pluck('name') в onComplete дает мне имя самой быстрой операции, но я хочу ops/sec значение каждой функции в наборе тестов. как это получить?

1 ответ

Решение

В вашем onComplete обратный вызов вы можете получить доступ к своим тестам через this ключевое слово (которое будет ссылаться на текущий объект BenchmarkSuit), например:

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

Eeach bench это экземпляр Benchmark. Таким образом, вы можете получить любую информацию, которую вы хотите (см. 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();
Другие вопросы по тегам