UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

34 lines (33 loc) 1.27 kB
"use strict"; 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); }