Nuclear Potato Monster

    durations

    3.4.2 • Public • Published

    durations

    Build Status NPM version

    Compatibilty

    Both Node.js and browsers are supported by durations. When using Node.js, the nanosecond-granulatiry process.hrtime() function is used. The best substitution is selected when in the browser such that consistency is maintained even if time granularity cannot be.

    Installation

    npm install --save durations

    Methods

    The following functions are exported:

    • duration(nanoseconds) - constructs a new Duration
    • nanos(nanoseconds) - constructs a new Duration
    • micros(microseconds) - constructs a new Duration
    • millis(milliseconds) - constructs a new Duration
    • seconds(seconds) - constructs a new Duration
    • stopwatch() - constructs a new Stopwatch (stopped)
    • time(function) - times a function synchronously
    • timeAsync(function(callback)) - times a function asynchronously
    • timePromised(function()) - times a promise-returning function

    Duration

    Represents a duration with nanosecond granularity, and provides methods for converting to other granularities, and formatting the duration.

    Methods

    • format() - human readable string representing the duration
    • nanos() - duration as nanoseconds
    • micros() - duration as microseconds
    • millis() - duration as milliseconds
    • seconds() - duration as seconds
    • minutes() - duration as minutes
    • hours() - duration as hours
    • days() - duration as days
    const {duration} = require('durations')
     
    const nanoseconds = 987654321
    console.log("Duration is", duration(nanoseconds).format())
     
    // Or, since toString() is an alias to format()
    console.log(`Duration is ${duration(nanoseconds)}`)

    Stopwatch

    A nanosecond granularity (on Node.js) stopwatch with chainable control methods, and built-in formatting.

    Stopwatch Methods

    • start() - start and return the stopwatch (no-op if already running)
    • stop() - stop and return the stopwatch (no-op if not running)
    • reset() - reset to zero elapsed time and return the stopwatch (implies stop)
    • duration() - fetch the elapsed time as a Duration
    • isRunning() - is the stopwatch running (true/false)
    const {stopwatch} = require('durations')
    const watch = stopwatch()
     
    // Pauses the stopwatch. Returns the stopwatch.
    watch.stop()
     
    // Starts the stopwatch from where it was last stopped. Returns the stopwatch.
    watch.start()
     
    // Reset the stopwatch (duration is set back to zero). Returns the stopwatch.
    watch.reset()
     
    console.log(`${watch.duration().seconds()} seconds have elapsed`)
    // OR
    console.log(`${watch} have elapsed`)

    Timer

    Times the execution of a function, and returns the duration.

    const {time: timeSync, timeAsync} = require('durations')
     
    // Synchronous work
    const someFunction = () => {
      let count = 0
     
      while (count < 1000000) {
        count++
      }
     
      console.log(`Count is: ${count}`)
    }
     
    console.log(`Took ${timeSync(someFunction)} to do something`)
     
    // Asynchronous work
    const someOtherFunction = next => {
      someFunction()
      next()
    }
     
    timeAsync(someOtherFunction, duration => {
      console.log(`Took ${duration} to do something else.`)
    })
     
    // Promised work
    const somePromisedOp = () => {
      return new Promise((resolve) => {
        someFunction()
        resolve()
      })
    }
     
    timePromised(somePromisedOp)
    .then(duration => {
      console.log(`Took ${duration} to keep promise.`)
    })

    Install

    npm i durations

    DownloadsWeekly Downloads

    290,856

    Version

    3.4.2

    License

    MIT

    Unpacked Size

    15.8 kB

    Total Files

    11

    Last publish

    Collaborators

    • buzuli
    • joeledwards