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();