Skip to content

Add API that simply runs benchmarks (without outputting the results to the console) #67

@tats-u

Description

@tats-u

tinybench has an API that simply runs benchmarks:

import { Bench } from "tinybench";

const bench = new Bench();
bench.add("bench1", heavyTask1);
bench.add("bench2", heavyTask2);
await bench.run();
const resultsMap = new Map(
  Iterator.from(bench.tasks).map((t) => [t.name, t.result]),
);
const bench1Result = resultMap.get("bench1");
const bench2Result = resultMap.get("bench2");

However, mitata's run will try to output the result to the console.
An API like above makes it possible to run benchmarks in arbitrary web applications like https://tats-u.github.io/markdown-cjk-friendly (uses tinybench in a Web Worker).

Note: with sample benchmark target Markdown: https://tats-u.github.io/markdown-cjk-friendly/?s16=LQAgACoAKgAxADIAIABGAGEAYwB0AG8AcgAgAIR2azBvMBwgLYqaW28wFlnokG4wsHSDWGcwDk5IMIsweTBNMB0gKgAqAGcwATCiMNcw6jBMMOqBBlJnMCAALgBlAG4AdgAgAJIwrYp_MLyPgDBuMG8wg1hMdZIw1mYnZmswWTCLMAEwaDBEMEYwO041XwIwojDXMOowbzDiZWswWFsoV1kwizCwdINYCVlwZWAwUTCSMK2KgDB5ME0wATBoMEQwRjDLejRYZzBZMAIwCgAtACAAKgAqAHNeh2VuMCAALgBlAG4AdgAP_7B0g1gJWXBlazBfasZbkjBuf08w6jC5MK8wAjAqACoAsHSDWMAw8zDXMIQw7TCwMAEwrzDpMMMwtzDlMOww3TD8MMgwSXtnMA9vKW1XMIQwWTBEMAIw6oHVUu0w_DDGMPwwtzDnMPMwVTCMMGswTzBEMAEwaDBEMEYwB2NYZAj_QwBJAC8AQwBEACAAi05FZYtPbjBZZROKCf8CMLswrzDsMMgwbzACXCh1bjC3MPwwrzDsMMMwyDDeMM0w_DC4MOMwZzChewZ0VzABMOqB1VLeVuKO-zDjdvtnATBoMEQwRjDZMLkwyDDXMOkwrzDGMKMwuTBMMDtOQW1nMFkwAjAKAC0AIAAqACoA1TDsMPww4DDvMPwwrzBuMBwgl2bZnu0w_DDJMB0gTDAsZ2p1ZzBamk0wazBqMIowRjCLMAIwKgAqAItPGv9GAGwAYQBzAGsAIABvMCAAYABwAHkAdABoAG8AbgAtAGQAbwB0AGUAbgB2AGAAIABMMGVRYzBmMEQwjDBwMCAAYAAuAGUAbgB2AGAALwBgAC4AZgBsAGEAcwBrAGUAbgB2AGAAIACSMOqB1VJnMK2KgDBfMIEwATAPYfNWWzBaMC2KmltMMAlZjzCLMFBgjDACMAoACgBLAGkAeQBvAHMAaABpAFUwkzABMJhjijALTlIwhk7jiRwwAf-IMFcwATDKTuVlbzAqACoADDBEMGQw-zBpMEYwf09GMB__aTBGMFxPizAf_w0wkjCfW9lS7nbafWcwAE4XbGswimLhYyoAKgBXMGEwgzBEMH4wVzCHMAIwZDBEMGYwTTBmMG0wPdgJ3goACgABT21pQFxLMIkwbzAqACoAHCAOZuVlbjBIU01SLU5rMG8wqV_nZVkwizAdICoAKgBoMEQwRjDFYDFYTDD6UWYwSjCKMH4wWTBMMAEwKgAqAK2KN4xRZ4VRbjA0bFOQTDAakDheaTBKMIowf09IMIswiDBGMGswajCLMEJmH2eSMDp5WTCCMG4wZzBvMEIwijB-MFswkzACMCoAKgAKAAoAfjBaMJNfZWduMLMw8zDUMOUw_DC_MG8wATAwAEswMQBuMGkwYTCJMEswbjC2ckthkjDWU4swKgAqAAww0zDDMMgwDTAqACoAZzDFYDFYkjBxYkYwAjBTMIwwazD-W1cwZjDPkVBbszDzMNQw5TD8ML8wbzABMCoAKgAMMM-RUFvTMMMwyDAI_60w5TD8MNMwwzDIMAn_DTAqACoAkjAodUQwizACMFMwbjDPkVBb0zDDMMgwbzABMM-RUFubUmZbbjAnYOqMazCIMGMwZjAqACoAMABoMDEAkjAMVEJmazABY2QwDDDNkW0wCFSPMFswtnJLYQ0wKgAqACAAazBqMIswUzBoMEwwZzBNMIswAjBTMG4wDDAMVEJmazAHiXBltnJLYZIwcWJIMIswDTC5cEwwATDPkVBbszDzMNQw5TD8ML8wbjAIipd7_YCbUm4wkG5rMGowYzBmMEQwizACMA&gfm=1&engine=micromark

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions