@monstermann/tinybench-pretty-printer
Version:
Customizable pretty-printer for tinybench benchmarks
27 lines (25 loc) • 1.26 kB
JavaScript
const require_formatNumber = require('./formatNumber.cjs');
const require_mean = require('./mean.cjs');
//#region src/helpers/createDurationFormatter.ts
function createDurationFormatter(locales) {
return function formatDuration(method, value, values) {
switch (method) {
case "shortest": return formatDuration(resolveMethod(value), value, values);
case "highest": return formatDuration(resolveMethod(Math.max(...values)), value, values);
case "lowest": return formatDuration(resolveMethod(Math.min(...values)), value, values);
case "mean": return formatDuration(resolveMethod(require_mean.mean(values)), value, values);
case "nanoseconds": return `${require_formatNumber.formatNumber(value * 1e6, locales)}ns`;
case "microseconds": return `${require_formatNumber.formatNumber(value * 1e3, locales)}µs`;
case "milliseconds": return `${require_formatNumber.formatNumber(value, locales)}ms`;
case "seconds": return `${require_formatNumber.formatNumber(value / 1e3, locales)}s `;
}
};
}
function resolveMethod(ms) {
if (ms / 1e3 >= 1) return "seconds";
if (ms >= 1) return "milliseconds";
if (ms * 1e3 >= 1) return "microseconds";
return "nanoseconds";
}
//#endregion
exports.createDurationFormatter = createDurationFormatter;