@monstermann/tinybench-pretty-printer
Version:
Customizable pretty-printer for tinybench benchmarks
50 lines (49 loc) • 1.96 kB
text/typescript
import { Alignment, Style } from "@monstermann/tables";
import { Task, TaskResultCompleted } from "tinybench";
//#region src/types.d.ts
type TaskWithResult = Task & {
result: TaskResultCompleted;
};
type CountMethod = "none" | "shortest" | "highest" | "lowest" | "mean" | "thousands" | "millions" | "billions";
type DurationMethod = "shortest" | "highest" | "lowest" | "mean" | "nanoseconds" | "microseconds" | "milliseconds" | "seconds";
type SummaryMethod = "x" | "%";
type SortMethod = false | "asc" | "desc" | ((tasks: TaskWithResult[]) => TaskWithResult[]);
type DefaultColumn = "name" | "summary" | "ops" | "time" | "margin" | "samples";
type ColumnContext = {
fastestTask: TaskWithResult;
locales: Intl.LocalesArgument;
slowestTask: TaskWithResult;
task: TaskWithResult;
tasks: TaskWithResult[];
formatCount: (method: CountMethod, value: number, values: number[]) => string;
formatDuration: (method: DurationMethod, value: number, values: number[]) => string;
formatNumber: (value: number) => string;
};
type ColumnOptions = {
header: string;
headerAlignment: Alignment;
headerStyle: Style[];
rowAlignment: Alignment;
rowStyle: Style[];
};
type Column = ColumnOptions & {
content: (ctx: ColumnContext) => string;
};
type Columns<T extends string> = Record<T, Column>;
type NameOptions = Partial<ColumnOptions>;
type SummaryOptions = Partial<ColumnOptions & {
fastestTitle: string;
method: SummaryMethod;
}>;
type OpsOptions = Partial<ColumnOptions & {
method: CountMethod;
}>;
type TimeOptions = Partial<ColumnOptions & {
method: DurationMethod;
}>;
type MarginOptions = Partial<ColumnOptions>;
type SamplesOptions = Partial<ColumnOptions & {
method: CountMethod;
}>;
//#endregion
export { Column, ColumnContext, ColumnOptions, Columns, CountMethod, DefaultColumn, DurationMethod, MarginOptions, NameOptions, OpsOptions, SamplesOptions, SortMethod, SummaryMethod, SummaryOptions, TaskWithResult, TimeOptions };