@cocopina/bench

Run JS benchmarks with nanoseconds accuracy.

Usage no npm install needed!

<script type="module">
  import cocopinaBench from 'https://cdn.skypack.dev/@cocopina/bench';
</script>

README

bench

Run JS benchmarks with nanoseconds accuracy.

Installation

npm i @cocopina/bench

API

bench(cases, options)

The package's default export.

Use this to run a full benchmark suite (including result printing and all), you can use the package's default export.

Arguments

  • cases <Function[]> - The different cases to compare.
  • options <Object>
    • iterations <Number> - The number of iterations to run. Higher iterations account for engine warm up and parsing. Default is 100000.
    • stat <String> - The statistical method to use when looking on the execution result. Can be either "median" or "average"1. Default is "median".

It's highly recommended to use median and/or a large amount of iterations when measuring performance to compensate for engine warmup, etc.

Example

const bench = require('@cocopina/bench');

bench([
    () => false,
    () => 1 + 1 + 1
]);

// Here are your results:
//
// Case 2 - 278ns median (Fastest 🏆)
// Case 1 - 433ns median (55.76% slower)

measureCase(fn, options)

Measures a single function's average execution time, in nanoseconds accuracy.

Use this to get only the execution time of a given function.

Arguments

  • fn <Function> - The function to measure.
  • options <Object>
    • iterations <Number> - The number of iterations to run. Higher iterations account for engine warm up and parsing. Default is 100000.
    • stat <String> - The statistical method to use when looking on the execution result. Can be either "median" or "average"1. Default is "median".

It's highly recommended to use median and/or a large amount of iterations when measuring performance to compensate for engine warmup, runtime code parsing to byte code, etc.

Returns

Number

Example

const { measureCase } = require('@cocopina/bench');

measureCase(() => false); // 253