UNPKG

@thi.ng/bench

Version:

Benchmarking & profiling utilities w/ various statistics & formatters (CSV, JSON, Markdown etc.)

57 lines (56 loc) 1.2 kB
import { EMPTY, FLOAT } from "../api.js"; const __n = (n, char = "-") => new Array(n).fill(char).join(""); const __pad = (w) => { const column = __n(w, " "); return (x) => { const s = typeof x === "number" ? FLOAT(x) : x; return s.length < w ? column.substring(0, w - s.length) + s : s.substring(0, w); }; }; const __row = (cols) => `|${cols.map((x, i) => COLUMNS[i](x)).join("|")}|`; const C24 = __pad(24); const C12 = __pad(12); const C8 = __pad(8); const D24 = __n(24); const D12 = __n(11) + ":"; const D8 = __n(7) + ":"; const COLUMNS = [C24, C8, C8, C12, C12, C8, C8, C8, C8, C8, C8, C8]; const DASHES = [D24, D8, D8, D12, D12, D8, D8, D8, D8, D8, D8, D8]; const FORMAT_MD = { prefix: () => __row([ "Title", "Iter", "Size", "Total", "Frequency", "Mean", "Median", "Min", "Max", "Q1", "Q3", "SD%" ]) + ` |${DASHES.join("|")}|`, start: EMPTY, warmup: EMPTY, result: (res) => __row([ res.title, "" + res.iter, "" + res.size, res.total, res.freq, res.mean, res.median, res.min, res.max, res.q1, res.q3, res.sd ]), total: EMPTY, suffix: EMPTY }; export { FORMAT_MD };