tatami-ng
TypeScript icon, indicating that this package has built-in type declarations

0.4.4 • Public • Published

tatami-ng

Cross JavaScript runtime benchmarking library

GitHub commit activity (master) Npm Version Npm Weekly Downloads JSR Version CI Workflow PRs Welcome

  • API backward compatible with mitata
  • Benchmark latency and throughput ✔
  • Support for sync and async benchmark ✔
  • Advanced benchmark statistics report: significance, error margin, variance, standard deviation, p-quantiles, ... ✔
  • Zero cost abstraction for multiple JS runtime support ✔
  • Support for ESM and TypeScript ✔

Install

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.

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.4.4/dist/browser/index.js'
</script>

Example

// adapt import to the targeted JS runtime
import { baseline, bench, clear, 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 (default: false)
  colors: true, // enable/disable colors (default: true)
  samples: 128, // minimum number of benchmark samples (default: 128)
  time: 1_000_000_000, // minimum benchmark time in nanoseconds (default: 1_000_000_000)
  avg: true, // enable/disable time (avg) column (default: true)
  iter: true, // enable/disable iter/s column (default: true)
  rmoe: true, // enable/disable error margin column (default: true)
  min_max: true, // enable/disable (min...max) column (default: true)
  percentiles: false, // enable/disable percentile columns (default: true)
});

clear();

Development

The JavaScript runtime environment used for development is bun.

License

MIT © Evan, Jerome Benoit

Package Sidebar

Install

npm i tatami-ng

Weekly Downloads

165

Version

0.4.4

License

MIT

Unpacked Size

185 kB

Total Files

16

Last publish

Collaborators

  • fraggle