time-rate

1.0.0 • Public • Published

time-rate

A simple library to measure time rates. Uses Luxon under the hood.

Usage

Simplest case, defaults to 10-second windows, returns numbers in rate per second.

import * as TimeRate from 'time-rate';

TimeRate.init({ key: 'heartbeat' });

setInterval(() => {
    TimeRate.register('heartbeat');
    console.log(`Heart is beating at ${TimeRate.rate('heartbeat')} beats per second.`);
}, 500);

Or you can customize it:

import * as TimeRate from 'time-rate';

TimeRate.init({ key: 'heartbeat', ratePer: 'minute', windowLength: 1, windowUnit: 'minute' });

setInterval(() => {
    TimeRate.register('heartbeat');
    console.log(`Heart is beating at ${TimeRate.rate('heartbeat')} beats per minute.`);
}, 2000);

Discrete Mode

Defaults to discrete mode. This is faster and uses less memory. Keeps track of the number of events per window. However your rate results will not be instantaneous, you will get the rate for the previous window. Keep windows smaller if you want more up-to-date results.

import * as TimeRate from 'time-rate';

TimeRate.init({ key: 'heartbeat', ratePer: 'minute', mode: 'discrete', windowLength: 10, windowUnit: 'seconds' });

setInterval(() => {
    TimeRate.register('heartbeat');
    console.log(`Heart is beating at ${TimeRate.rate('heartbeat')} beats per minute.`);
}, 2000);

Rolling Mode

This keeps track of every event that has fired during the specified window. Erases events once they are past the window. Gives the most accurate value, but at the cost of storage space and speed.

import * as TimeRate from 'time-rate';

TimeRate.init({ key: 'heartbeat', ratePer: 'minute', mode: 'rolling', windowLength: 1, windowUnit: 'minute' });

setInterval(() => {
    TimeRate.register('heartbeat');
    console.log(`Heart is beating at ${TimeRate.rate('heartbeat')} beats per minute.`);
}, 2000);

If you register 50,000 events per minute and your window is 1 minute, then an array of 50,000 dates is allocated. Use this mode only if you know you're okay with that tradeoff.

Dependents (0)

Package Sidebar

Install

npm i time-rate

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

14.8 kB

Total Files

8

Last publish

Collaborators

  • ronpenton