Skip to content

Measure the running time of JavaScript code. (Mainly used for calculate the total running time of a piece of code.)

License

Notifications You must be signed in to change notification settings

zjffun/stopwatch2

Repository files navigation

jsdelivr npm version test CI codecov

stopwatch2

Measure the runtime of JavaScript code. (Mainly used for calculate the total runtime of a piece of code.)

Installation

npm

npm install stopwatch2

CDN

<script src="https://cdn.jsdelivr.net/npm/stopwatch2@latest/index.min.js"></script>

Usage

Stopwatch2 exposes a class simply call start, pause, stop and etc. methods on it's instance or itself to measure the runtime of code.

ES modules:

import Stopwatch2 from 'stopwatch2';

Stopwatch2.start('tag1');
Stopwatch2.pause('tag1');
Stopwatch2.stop('tag1');

// or

const sw = new Stopwatch2('tag2');
sw.start();
sw.pause();
sw.stop();

// show result
console.table(sw);
console.table(Stopwatch2.get());

CommonJS:

const Stopwatch2 = require('stopwatch2');

Stopwatch2.start('tag1');
Stopwatch2.pause('tag1');
Stopwatch2.stop('tag1');

// or

const sw = new Stopwatch2('tag2');
sw.start();
sw.pause();
sw.stop();

// show result
console.table(sw);
console.table(Stopwatch2.get());

CDN:

<script src="https://cdn.jsdelivr.net/npm/stopwatch2@latest/index.min.js"></script>
<script>
  Stopwatch2.start('tag1');
  Stopwatch2.pause('tag1');
  Stopwatch2.stop('tag1');

  // or

  const sw = new Stopwatch2('tag2');
  sw.start();
  sw.pause();
  sw.stop();

  // show result
  console.table(sw);
  console.table(Stopwatch2.get());
</script>

Examples

Statistic piece of code total runing time

const Stopwatch2 = require('stopwatch2');

const pushSW = new Stopwatch2('push');
const unshiftSW = new Stopwatch2('unshift');

const arr1 = [];
const arr2 = [];
for (let i = 0; i < 1 << 17; i++) {
  // ...
  pushSW.start('push');
  arr1.push(i);
  pushSW.pause('push');

  // ...
  unshiftSW.start('unshift');
  arr2.unshift(i);
  unshiftSW.pause('unshift');

  // ...
}

console.table(Stopwatch2.get());
/*
┌─────────┬───────────────────┬────────────────────┬────────────────────┬────────────────────────┬─────────┬───────────┐
│ (index) │     startTime     │   lastStartTime    │      execTime      │      lastExecTime      │  state  │    tag    │
├─────────┼───────────────────┼────────────────────┼────────────────────┼────────────────────────┼─────────┼───────────┤
│  push   │ 65.48650002479553 │ 2245.4135000109673 │ 20.006211578845978 │ 0.00010001659393310547 │ 'pause' │  'push'   │
│ unshift │ 65.70870000123978 │ 2245.4136999845505 │ 2126.4831227064133 │  0.044700026512145996  │ 'pause' │ 'unshift' │
└─────────┴───────────────────┴────────────────────┴────────────────────┴────────────────────────┴─────────┴───────────┘
*/

console.log('' + Stopwatch2);
/*
push -> exec: 20.006211578845978, state: pause, start: 65.48650002479553, lexec: 0.00010001659393310547, lstart: 2245.4135000109673
unshift -> exec: 2126.4831227064133, state: pause, start: 65.70870000123978, lexec: 0.044700026512145996, lstart: 2245.4136999845505
*/

console.table(pushSW);
/*
┌───────────────┬────────────────────────┐
│    (index)    │         Values         │
├───────────────┼────────────────────────┤
│   startTime   │    71.1270010471344    │
│ lastStartTime │   2192.5521000027657   │
│   execTime    │   20.203357875347137   │
│ lastExecTime  │ 0.00010001659393310547 │
│     state     │        'pause'         │
│      tag      │         'push'         │
└───────────────┴────────────────────────┘
*/

console.log('' + pushSW);
/*
push -> exec: 20.203357875347137, state: pause, start: 71.1270010471344, lexec: 0.00010001659393310547, lstart: 2192.5521000027657
*/

API

Instance methods and attributes

name description
Stopwatch2.prototype.start() Start this stopwatch.
Stopwatch2.prototype.pause() Pause this stopwatch.
Stopwatch2.prototype.stop() Stop this stopwatch.
Stopwatch2.prototype.toString() Return the string form stopwatch info. Usually for log and print.
Stopwatch2.prototype.startTime (number) The start time of this stopwatch.
Stopwatch2.prototype.lastStartTime (number) The time of the last start call of this stopwatch.
Stopwatch2.prototype.execTime (number) The total execute time of this stopwatch.
Stopwatch2.prototype.lastExecTime (number) The last execute time of this stopwatch.
Stopwatch2.prototype.state (string) The state of this stopwatch. This value can be one of start, pause and stop
Stopwatch2.prototype.tag (string) The tag of this stopwatch.

Class methods and attributes

name description
Stopwatch2.start(tag1, tag2, ...) Start multiple stopwatches. If no tag name given, start all.
Stopwatch2.pause(tag1, tag2, ...) Pause multiple stopwatches. If no tag name given, pause all.
Stopwatch2.stop(tag1, tag2, ...) Stop multiple stopwatches. If no tag name given, stop all.
Stopwatch2.clear() Clear stopwatches.
Stopwatch2.create(tag1, tag2, ...) Create multiple stopwatches.
Stopwatch2.get(tag1, tag2, ...) Get object form stopwatches.If no tag name given, return all. Usually use with console.table.
Stopwatch2.getArray(tag1, tag2, ...) Get array form stopwatches. If no tag name given, return all.
Stopwatch2.getOne(tag) Get one stopwatch.
Stopwatch2.toString() Return string form stopwatch info. Usually for log and print.
Stopwatch2.sleep(ms) Sleep with given millisecond.
Stopwatch2.registerToGlobal(name) Regist the Stopwatch2 to global with given name.
Stopwatch2.config.performanceMeasurement Whether or not record the result to browser's Performance pannel.
default: false
Stopwatch2.states (object) Contain start, pause and stop state attribute.

Development

Release History

0.0.7

  • fix the environment detection

0.0.6

  • redesign API

About

Measure the running time of JavaScript code. (Mainly used for calculate the total running time of a piece of code.)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published