close
Skip to content

js-benchmark-all/measure-loop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

measure-loop

An accurate, runtime-agnostic measure loop for benchmarking purposes.

Usage

import { gc, hrtime } from 'measure-loop/env'; // Auto detect available functions

import { createSideEffect } from 'measure-loop/side-effect'; // Avoid calls from being optimized out
import { measure } from 'measure-loop/measure';

const result = await measure(
  () => {
    createSideEffect(performance.now());
  },
  gc,
  hrtime
);

// Run and collect timings
console.log('runtimes:', result.runtimes);

To run:

bun run bench.ts

# Expose manual GC for V8-based runtime.
node --expose-gc bench.ts
deno run --v8-flags=--expose-gc bench.ts
...

To collect GC time:

import { gc, hrtime } from 'measure-loop/env';

import { createSideEffect } from 'measure-loop/side-effect';
import { measure } from 'measure-loop/measure';

const result = await measure(
  () => {
    createSideEffect(performance.now());
  },
  gc,
  hrtime,
  { measureGC: true }
);

console.log('runtimes:', result.runtimes);
console.log('gcs:', result.gcs);

The loop implementation is based on mitata. Check it out it's a good library :).

About

A very accurate measure loop for benchmarking purposes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors