JSPM

approximate-now

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3601
  • Score
    100M100P100Q125029F
  • License BSD-3-Clause

Approximate (fast) current UNIX time.

Package Exports

  • approximate-now

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (approximate-now) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

approximate-now

Travis build status Coveralls NPM version Canonical Code Style Twitter Follow

Approximate (fast) current UNIX time.

Motivation

Sometimes you don't care about the exact time the event took place, but rather need to know approximately when. If your use case is performance sensitive, then Date.now() might not be the best option because it has a measurable impact to the performance. approximate-now provides an approximate (to the error of 50ms) time without a performance penalty of Date.now().

Usage

import {
  approximateTime,
} from 'approximate-now';

// `approximateTime.now` value is updated by reference every 50ms.
console.log(approximateTime.now);

Sequence guarantee

It is guaranteed that two consequent attempts to retrieve time within the same 50ms time window will have unique values, i.e.

Assuming that the current time is 0000000000000, then:

approximateTime.now; // 0000000000000
approximateTime.now; // 0000000000001
approximateTime.now; // 0000000000002

However, if approximateTime.now is accessed more than 50 times within the same 50ms time window, then the top-most value within that interval is returned repeatedly.

approximateTime.now; // 0000000000000
approximateTime.now; // 0000000000001
approximateTime.now; // 0000000000002

// approximateTime.now x 50
approximateTime.now; // 0000000000050
approximateTime.now; // 0000000000050
approximateTime.now; // 0000000000050

benchmark

Date.now()          x 19,900,411 ops/sec ±0.59% (93 runs sampled)
approximateTime.now x 82,420,291 ops/sec ±0.83% (92 runs sampled)

Use cases

Any sort of time-sensitive operations when it is sufficient to retrieve an approximate timestamp, e.g. roarr logger uses approximate-now to record the time when a log message was produced.