enumset32-benchmarks
Version:
Benchmarks for enumset32 vs other set implementations
60 lines (59 loc) • 2.62 kB
JavaScript
/*!
* Copyright (c) 2019 Justin Johansson
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import * as fs from 'fs';
import * as path from 'path';
import { BenchResult, SVGBarChart } from './couchmark';
import * as tags from './tags';
function main() {
return __awaiter(this, void 0, void 0, function* () {
let suites = tags.getSuites();
console.log(`Starting enumset32-benchmarks (${suites.length} suites)\n`);
for (let i = 0; i < suites.length; ++i) {
let suite = suites[i];
let suiteComplete = new Promise((resolve) => {
let benchRslts = [];
suite
.on('start', function () {
console.log(`Running ${this.name} suite (${i + 1} of ${suites.length})\n`);
})
.on('cycle', function (ev) {
let bm = ev.target;
let stats = bm.stats;
let summary = String(ev.target);
console.log(summary);
let benchResult = new BenchResult(bm.name, stats.sample.length, bm.hz, stats.mean, stats.moe, stats.rme, summary);
benchRslts.push(benchResult);
stats.sample.length = 0;
})
.on('complete', function () {
suites[i] = undefined;
resolve({ suiteName: suite.name, benchResults: benchRslts });
});
suite.run({ async: true });
});
let { suiteName, benchResults } = yield suiteComplete;
try {
let docdir = 'doc';
if (fs.existsSync(docdir)) {
let svgResult = new SVGBarChart(benchResults).result;
fs.writeFileSync(path.join(docdir, `${suiteName}.svg`), svgResult);
}
}
catch (e) {
console.error(e.message);
process.exitCode = 1;
}
console.log();
}
});
}
main();