UNPKG

cronometro

Version:

Simple benchmarking suite powered by HDR histograms.

88 lines (87 loc) 2.72 kB
import { type Worker } from 'node:worker_threads'; import { type Tracker } from './tracker.ts'; export interface PrintOptions { colors?: boolean; compare?: boolean; compareMode?: 'base' | 'previous'; } export type SetupFunctionCallback = (err?: Error | null) => void; export type SetupFunction = (cb: SetupFunctionCallback) => Promise<any> | void; export interface Options { iterations: number; setup: Record<string, SetupFunction>; errorThreshold: number; print: boolean | PrintOptions; warmup: boolean; onTestStart?: (name: string, data: object, worker: Worker) => void; onTestEnd?: (name: string, result: Result, worker: Worker) => void; onTestError?: (name: string, error: Error, worker: Worker) => void; } export type StaticTest = () => any; export type AsyncTest = (cb: Callback) => any; export type PromiseTest = () => Promise<any>; export type TestFunction = (StaticTest | AsyncTest | PromiseTest) & { skip?: boolean; }; export interface Test { test?: TestFunction; before?: SetupFunction; after?: SetupFunction; skip?: boolean; } export type Percentiles = Record<string, number>; export interface Result { success: boolean; error?: Error; size: number; min: number; max: number; mean: number; stddev: number; standardError: number; percentiles: Percentiles; } export type Callback = (err: Error | null, results: Results) => any; export type Tests = Record<string, TestFunction | Test>; export type Results = Record<string, Result>; export interface Context { warmup: boolean; iterations: number; errorThreshold: number; print: boolean | PrintOptions; tests: [string, TestFunction | Test][]; results: Results; current: number; callback: Callback; onTestStart?: (name: string, data: object, worker: Worker) => void; onTestEnd?: (name: string, result: Result, worker: Worker) => void; onTestError?: (name: string, error: Error, worker: Worker) => void; } export interface WorkerContext { path: string; tests: [string, TestFunction | Test][]; index: number; iterations: number; warmup: boolean; errorThreshold: number; } export interface TestContext { name: string; test: TestFunction; errorThreshold: number; total: number; executed: number; tracker: Tracker; start: bigint; handler: (error?: Error | null) => void; notifier: (value: any) => void; callback: (result: Result) => void; } export declare const defaultOptions: { iterations: number; warmup: boolean; errorThreshold: number; print: boolean; }; export declare const percentiles: number[]; export declare const runnerPath: string;