vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
34 lines (33 loc) • 1.27 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.runBenchmark = runBenchmark;
var _cliTable = _interopRequireDefault(require("cli-table3"));
var _benchmark = require("benchmark");
function runBenchmark(suites, options) {
const table = new _cliTable.default({
head: ['name', 'ops/sec'],
colAligns: ['left', 'right']
});
const suite = new _benchmark.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, (0, _benchmark.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);
}
;