UNPKG

vtils

Version:

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

29 lines 1.05 kB
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); }