Skip to content

A stopwatch inspired by Spring Stopwatch written in Typescript

License

Notifications You must be signed in to change notification settings

vcfvct/stopwatch-node

Repository files navigation

Stopwatch

A simple JS/TS Stopwatch with 0 dependency.

This is inspired by the Spring-Stopwatch. Written in Typescript, 100% Test Coverage.

Install

npm install stopwatch-node

Example

import { StopWatch } from 'stopwatch-node';

const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));

(async () => {
  const sw = new StopWatch('sw');
  sw.start('Task 1');
  await sleep(1000);
  sw.stop();
  // whether the stop watch is currently running
  console.info(sw.isRunning());

  const task2Name = 'Task 2';
  sw.start(task2Name);
  await sleep(1500);
  sw.stop();

  sw.start('Task 3');
  await sleep(500);
  sw.stop();

  sw.start('Task 4');
  await sleep(300);
  sw.stop();

  console.info(`Short Summary: ${sw.shortSummary()}`);
  console.info(`Task Count: ${sw.getTaskCount()}`);
  // a table describing all tasks performed
  sw.prettyPrint();

  const task2 = sw.getTask(task2Name);
  console.info(`'${task2Name}' took ${task2?.timeMills} and percentage is ${task2?.percentage}`);
})();

Output

------------------------------------------
ms 		 % 		 Task name
------------------------------------------
1000 		 30.21 		 Task 1
1504 		 45.44 		 Task 2
505 		 15.26 		 Task 3
301 		 9.09 		 Task 4


'Task 2' took 1506 and percentage is 45.47