0.4.0 • Published 7 months ago

micro-bmark-ts v0.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Description

This repo is a fork of the original project micro-bmark.

All credits go to the original authors, as described in the License.

Changes Made

  • Add .d.ts file for Typescript support.

micro-bmark

Benchmark your node.js projects with nanosecond resolution.

  • Utilizes node.js process.hrtime for 1ns resolution
  • Colorful formatting with nice units
  • No dependencies, only ~150 lines of code: as lightweight as possible to not interfere with benchmarked code
  • No code for estimating running time - specify samples manually
  • Shows relative margin of error, min/max runs only if it's high

npm.io

Usage

npm install --save-dev micro-bmark
import * as bench from "micro-bmark";
await bench.mark("printing", () => Promise.resolve(0));

const { mark, compare, run } = bench; // Or, use as such
run(async () => {
  await mark("base", () => Promise.resolve(1));
  await mark("sqrt", 10000, () => Math.sqrt(2));
  await compare("math", 5000, {
    lib1: () => Math.sqrt(2),
    lib2: () => Math.sqrt(3),
  });
  // bench.utils.logMem(); // Log current RAM
  // console.log(bench.utils.getTime(), bench.utils.formatD(bench.utils.getTime())); // Get current time in nanoseconds
});

Example output:

getPublicKey() x 6,072 ops/sec @ 164μs/op ± 8.22% (min: 143μs, max: 17ms)
sign x 4,980 ops/sec @ 200μs/op
signSync x 4,671 ops/sec @ 214μs/op
verify x 969 ops/sec @ 1ms/op
recoverPublicKey x 890 ops/sec @ 1ms/op
getSharedSecret aka ecdh x 585 ops/sec @ 1ms/op
  • await bench.run(args?, callback): Runs bunch of suites. Not required
  • await bench.mark(label?, samples?, callback): Measures callback (can be async) samples times
  • await bench.compare(label, samples, map): mark, but compares runs between object values
    • map: { a: () => {}, b: () => {} }
  • bench.utils.logMem(): undefined: Logs memory usage
  • bench.utils.getTime(): bigint: Returns current time in bigint.

License

MIT License

Copyright (c) 2020 Paul Miller (https://paulmillr.com), (c) 2010-2016 Mathias Bynens, John-David Dalton, (c) Robert Kieffer from JSLitmus.js