tatami-ng
Cross JavaScript runtime benchmarking library and CLI
- CLI and JS library support ✔
- Library API backward compatible with mitata up to version 0.1.14 ✔
- Benchmark latency and throughput ✔
- Support for sync and async benchmark ✔
- Advanced benchmark statistics: significance, error margin, variance, standard deviation, p-quantiles, ... ✔
- Multiple JS runtime support at zero cost abstraction (primary support for node, deno, bun and browsers but works with all JS runtime) ✔
- Support for CommonJS, ESM and TypeScript ✔
Table of contents
Library installation
Node
npmjs
npm install tatami-ng
JSR
npx jsr add @poolifier/tatami-ng
Deno
deno add @poolifier/tatami-ng
Deno versions >= 1.40.x are supported.
The --allow-hrtime
permission flag is recommended to allow high-resolution time measurement with Deno v1.x.x.
Bun
npmjs
bun add tatami-ng
JSR
bunx jsr add @poolifier/tatami-ng
Bun versions >= 1.x are supported.
Browser
<script type="module">
import {
...
} from 'https://cdn.jsdelivr.net/npm/tatami-ng@0.8.10/dist/browser/index.js'
</script>
Library usage example
import { baseline, bench, bmf, group, run } from 'tatami-ng'
bench('noop', () => {})
bench('noop2', () => {})
group('group', () => {
baseline('baseline', () => {})
bench('Date.now()', () => {
Date.now()
})
bench('performance.now()', () => {
performance.now()
})
})
group({ name: 'group2', summary: false }, () => {
bench('new Array(0)', () => {
new Array(0)
})
bench('new Array(1024)', () => {
new Array(1024)
})
})
await run({
units: false,
silent: false,
json: false,
reporter: bmf
file: 'results.json',
colors: true,
now: () => 1e6 * performance.now(),
samples: 128,
time: 1_000_000_000,
warmup: true,
latency: true,
throughput: true,
latencyMinMax: true,
latencyPercentiles: false,
})
The tests directory contains more examples.
CLI installation
Node
npm install tatami-ng -g
Deno
deno install -g --allow-read --allow-run --allow-sys -n tatami npm:tatami-ng
Bun
bun add tatami-ng -g
Ensure the global installation directory is in your path:
- Unix:
${HOME}/.bun/bin
- Windows: TODO
CLI standalone binary
In the cloned repository root directory, run:
Deno
bun build:cli:deno
Bun
bun build:cli:bun
The standalone binary in ./dist/<runtime_name>
can be moved to a directory in your path.
CLI usage examples
tatami --help
tatami --bench 'hexdump <file>' --bench 'xxd <file>'
Development
The JavaScript runtime environment used for development is bun.
License
MIT © Evan, Jerome Benoit