@digigov/benchmark
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

@digigov/benchmark

@digigov/benchmark is a lightweight utility to assist with the profiling of JavaScript code, offering insights into execution time and memory usage during benchmark runs. Performance is measured by running the code for a specified amount of iterations, and calculating the average operations per millisecond and memory usage per millisecond.

Features

  • Simple and configurable benchmark setup
  • Customizable iteration and concurrency settings for benchmarks
  • Support for async benchmarks
  • Detailed profiling report, with execution time (in milliseconds) and memory usage metrics

Installation

npm install @digigov/benchmark

Usage

  1. Initialization
import BenchmarkProfiler from '@digigov/benchmark';

const profiler = new BenchmarkProfiler({
  iterations: 1000, // optional
  concurrency: 1, // optional
});
  1. Adding benchmarks
profiler.add({
  name: 'Name of the benchmark',
  fn: async () => {
    // Benchmark code
  },
  beforeAll: async () => {
    // Optional. Runs once before all iterations
  },
  afterAll: async () => {
    // Optional. Runs once after all iterations
  },
  beforeEach: async () => {
    // Optional. Runs before each iteration
  },
  afterEach: async () => {
    // Optional. Runs after each iteration
  },
});
  1. Running benchmarks
const results = await profiler.run();
console.log(results);

Result Structure

Results from the run() function return an array with each benchmark's result:

[
  {
    name: string, // Name of the benchmark
    iterations: number, // Number of iterations run
    timeInMs: number, // Total time taken for all iterations in milliseconds
    averageOpsPerMs: number, // Average operations per millisecond
    averageKbPerMs: number, // Average memory used per millisecond
    maxKb: number, // Peak memory usage during the benchmark run
  },
];

Readme

Keywords

none

Package Sidebar

Install

npm i @digigov/benchmark

Weekly Downloads

108

Version

1.0.4

License

BSD-2-Clause

Unpacked Size

98.6 kB

Total Files

23

Last publish

Collaborators

  • kpap
  • tsironis
  • vkefallinos.grnet
  • thanasisk00