@poolifier/tatami-ng@0.8.16Built and signed on GitHub ActionsBuilt and signed on GitHub Actions
Built and signed on GitHub Actions
latest
poolifier/tatami-ngCross JavaScript runtime benchmarking library and CLI
This package works with Node.js, Deno, Bun, BrowsersIt is unknown whether this package works with Cloudflare Workers




JSR Score
76%
Published
6 months ago (0.8.16)
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
- Library usage example
- CLI installation
- CLI standalone binary
- CLI usage examples
- Development
- License
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.16/dist/browser/index.js' </script>
Library usage example
// adapt import to the targeted JS runtime 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, // print units cheatsheet (default: false) silent: false, // enable/disable stdout output (default: false) json: false, // enable/disable json output or set json output indentation (default: false) reporter: bmf // custom reporter function (default: undefined) file: 'results.json', // write json output to file (default: undefined) colors: true, // enable/disable colors (default: true) now: () => 1e6 * performance.now(), // custom nanoseconds timestamp function to replace default one (default: undefined) samples: 128, // minimum number of benchmark samples (default: 128) time: 1_000_000_000, // minimum benchmark execution time in nanoseconds (default: 1_000_000_000) warmup: true, // enable/disable benchmark warmup or set benchmark warmup run(s) (default: true) warmupTime: 250_000_000, // minimum warmup execution time in nanoseconds (default: 250_000_000) latency: true, // enable/disable time/iter column (default: true) throughput: true, // enable/disable iters/s column (default: true) latencyMinMax: true, // enable/disable latency (min...max) column (default: true) latencyPercentiles: false, // enable/disable latency percentile columns (default: true) })
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 © evanwashere, Jerome Benoit
Built and signed on
GitHub Actions
Add Package
deno add jsr:@poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";
Import directly with a jsr specifier
import * as tatami_ng from "jsr:@poolifier/tatami-ng";
Add Package
pnpm i jsr:@poolifier/tatami-ng
pnpm dlx jsr add @poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";
Add Package
yarn add jsr:@poolifier/tatami-ng
yarn dlx jsr add @poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";
Add Package
vlt install jsr:@poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";
Add Package
npx jsr add @poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";
Add Package
bunx jsr add @poolifier/tatami-ng
Import symbol
import * as tatami_ng from "@poolifier/tatami-ng";