Skip to content

ArthurKa/elapsing-time

Repository files navigation

All dependencies Reported vulnerabilities Commits NPM-version Total downloads Developed by
Publish size Install size Minified size Minified + gzipped size

elapsing-time@3.2.0

Helps you to measure the runtime of your code. Package is available both for browser and Node.js. Time counts with help of performance.now function.

Installation

elapsing-time is available via NPM:

$ npm i elapsing-time@3.2.0

Usage

import ElapsingTime from 'elapsing-time';

const timer = new ElapsingTime();
const wait = (ms: number) => new Promise<void>(res => setTimeout(res, ms));

(async () => {
  for(let i = 0; i < 10; i++) {
    timer.start();
    await wait(200);
    timer.stop();
  }

  console.log(timer.ms);      // 2002.329
  console.log(timer.s);       // 2.002        // As seconds
  console.log(timer.us);      // 2001809.967  // As microseconds
  console.log(timer.avg.ms);  // 200.233      // Average value
})();

Timer.reset

import ElapsingTime from 'elapsing-time';

const timer = new ElapsingTime();
const wait = (ms: number) => new Promise<void>(res => setTimeout(res, ms));

(async () => {
  // Total value
  timer.start();
  await wait(100);
  timer.stop();
  console.log(timer.ms);  // 102.937

  timer.start();
  await wait(200);
  timer.stop();
  console.log(timer.ms);  // 303.213

  timer.start();
  await wait(300);
  timer.stop();
  console.log(timer.ms);  // 603.607

  // Now with reset
  timer.reset();
  timer.start();
  await wait(100);
  timer.stop();
  console.log(timer.ms);  // 100.715

  timer.reset();
  timer.start();
  await wait(200);
  timer.stop();
  console.log(timer.ms);  // 200.74

  timer.reset();
  timer.start();
  await wait(300);
  timer.stop();
  console.log(timer.ms);  // 300.782
})();

Timer.start with autoreset

import ElapsingTime from 'elapsing-time';

const timer = new ElapsingTime();
const wait = (ms: number) => new Promise<void>(res => setTimeout(res, ms));

(async () => {
  timer.start();
  await wait(100);
  timer.stop(true);   // The next timer.start will invoke timer.reset under the hood
  console.log(timer.ms);  // 103.025

  timer.start();
  await wait(200);
  timer.stop(true);
  console.log(timer.ms);  // 200.088

  timer.start();
  await wait(300);
  timer.stop();
  console.log(timer.ms);  // 300.327
})();

Built-in print functions

import ElapsingTime from 'elapsing-time';

const timer = new ElapsingTime();
const wait = (ms: number) => new Promise<void>(res => setTimeout(res, ms));

(async () => {
  timer.start();
  await wait(100);

  timer.msPrint();  // Time: 102.07 ms
  await wait(10);
  timer.sPrint();  // Time: 0.115 s
  // There is no timer.stop so it's still counting
  await wait(10);
  timer.usPrint();  // Time: 124822.4 us
  await wait(10);
  timer.msPrint('Custom label');  // Custom label: 134.661 ms
})();

The same way "avg" print functions are also present in timer.avg:

import ElapsingTime from 'elapsing-time';

const timer = new ElapsingTime();
const wait = (ms: number) => new Promise<void>(res => setTimeout(res, ms));

(async () => {
  timer.start();
  await wait(100);
  timer.stop();
  timer.avg.sPrint();  // Time: 0.102 s

  timer.start();
  await wait(900);
  timer.stop();
  timer.avg.usPrint();  // Time: 501137.335 us

  timer.start();
  await wait(200);
  timer.avg.msPrint('Custom label');  // Custom label: 400.882 ms
  timer.stop();
})();

Testing

Manually tested by the developer during development. Automated tests are not provided.


Your improve suggestions and bug reports are welcome any time.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published