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

2.1.1 • Public • Published

Benchloop

Simple benchmarking library with a pretty output.

Install

npm install --save-dev benchloop

Usage

The following interface is provided:

type LogType = 'extended' | 'compact' | false;

type Hook<CTX> = ( ctx: CTX ) => void;
type HookAfter<CTX, DATA> = ( ctx: CTX, data: DATA ) => void;

type ProfileOptions<CTX> = {
  name: string,
  iterations: number,
  log: LogType,
  groups: string[],
  only: boolean,
  skip: boolean,
  special: boolean,
  before: Hook<CTX>,
  beforeEach: Hook<CTX>,
  after: HookAfter<CTX, ProfileData<CTX>>,
  afterEach: Hook<CTX>,
  ctx: () => CTX,
  fn: ( ctx: CTX, iteration: number ) => void
};

type ProfileData<CTX> = {
  options: ProfileOptions<CTX>,
  iterations: number,
  elapsed: number,
  profiles: number[]
};

function benchloop<CTX = any> ( options: Partial<ProfileOptions<CTX>> | ProfileOptions<CTX>['fn'] ): void;
function group ( group: string, fn: Function ): void;

benchloop.only = benchloop;
benchloop.skip = benchloop;
benchloop.group = group;
benchloop.group.only = group;
benchloop.group.skip = group;

benchloop.defaultOptions: Options;

You can use this library like so:

import benchloop from 'benchloop';

benchloop ({
  name: 'Example benchmark',
  fn: () => {
    for ( let i = 0, l = 100000 * Math.random (); i < l; i++ ) {
      Math.exp ( i, 10 );
    }
  }
});

benchloop.group ( 'MyGroup', () => { // Group multiple benchmarks together

  benchloop ({
    name: 'Regular benchmark',
    fn: () => {}
  });

  benchloop.skip ({ // Skip this benchmark
    name: 'Skipped benchmark',
    fn: () => {}
  });

  benchloop.only ({ // Execute only this benchmark
    name: 'Only benchmark',
    fn: () => {}
  });

});

benchloop.summary (); // Display a summary

The benchloop and benchloop.group functions support the optional only and skip methods, useful for quickly running benchmarks selectively.

License

MIT © Fabio Spampinato

Package Sidebar

Install

npm i benchloop

Weekly Downloads

25

Version

2.1.1

License

none

Unpacked Size

23.6 kB

Total Files

27

Last publish

Collaborators

  • fabiospampinato