vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
29 lines • 1.05 kB
JavaScript
import Table from 'cli-table3';
import { formatNumber, Suite } from 'benchmark';
export function runBenchmark(suites, options) {
const table = new Table({
head: ['name', 'ops/sec'],
colAligns: ['left', 'right']
});
const suite = new Suite();
let expectFastestName;
for (let name of Object.keys(suites)) {
const fn = suites[name];
if (name.endsWith('!fastest')) {
name = name.replace(/!fastest$/, '');
expectFastestName = name;
}
suite.add(name, fn);
}
suite.on('cycle', function (event) {
table.push([event.target.name, formatNumber(Math.round(event.target.hz))]);
});
suite.on('complete', function () {
const actualFastestName = this.filter('fastest').map('name')[0];
if (expectFastestName != null && expectFastestName !== actualFastestName) {
throw new Error(`Expect fastest is ${expectFastestName}, actual fastest is ${actualFastestName}.`);
}
console.log(table.sort((a, b) => b[1].replace(/,/, '') - a[1].replace(/,/, '')).toString());
});
suite.run(options);
}