@springworks/high-resolution-millisecond-timer
v3005.77.0
Published
A small util to create timers that can measure sub-millisecond time in a consistently accurate way.
Downloads
333
Readme
@springworks/high-resolution-millisecond-timer
A small util to create timers that can measure sub-millisecond time in a consistently accurate way.
yarn add @springworks/high-resolution-millisecond-timer
Usage
import { createHighResolutionMillisecondTimer } from '@springworks/high-resolution-millisecond-timer';
// Create a timer
const timer = createHighResolutionMillisecondTimer();
// Run the code that you want to measure.
someFunction();
// Save the elapsed time in a variable.
// This is the number of milliseconds that `someFunction` took to run but in nanosecond resolution.
const elapsed_time = timer();
console.log(`someFunction took ${elapsed_time} ms to run.`);
// This will log something like "someFunction took 3.214684 ms to run."
// Even invoking the function immediately will result in a tangible measurement.
createHighResolutionMillisecondTimer()(); // <- note the extra invocation.
// this will return something like 0.001802
Why use this instead of new Date()
or Date.now()
?
The Date
API gets it's current time from the operating system and as such is subject to clock drift. This means that the OS can decide to change what time it is between your measurements. You can even end up going back in time...
This function uses the HR Timer API and does not depend on what the OS think the clock is right now.