@monstermann/tinybench-pretty-printer
Version:
Customizable pretty-printer for tinybench benchmarks
27 lines (25 loc) • 1.12 kB
JavaScript
import { formatNumber } from "./formatNumber.mjs";
import { mean } from "./mean.mjs";
//#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(mean(values)), value, values);
case "nanoseconds": return `${formatNumber(value * 1e6, locales)}ns`;
case "microseconds": return `${formatNumber(value * 1e3, locales)}µs`;
case "milliseconds": return `${formatNumber(value, locales)}ms`;
case "seconds": return `${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
export { createDurationFormatter };