0.0.2 • Published 4 years ago

gctime v0.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
4 years ago

gctime

Record time spent on GC in high resolution.
Yields a statistic set with min, max and sum of duration and size (number of cycles).

npm status node Travis build status AppVeyor build status JavaScript Style Guide Dependency status

Usage

Continuously log GC cycles and duration:

const gctime = require('gctime')
const nano = require('nanoseconds')
const diffy = require('diffy')()
const fmt = require('util').format
const stats = gctime.get()

diffy.render(function () {
  // Update stats. Alternatively call .get() to get a new object.
  gctime.accumulate(stats)

  return fmt(
    'cycles: %d. min: %dns. max: %dns. avg: %dns',
    stats.size,
    nano(stats.min),
    nano(stats.max),
    nano(stats.sum) / stats.size | 0
  )
})

gctime.start()

setInterval(() => Array(1e6).fill(1), 100)
setInterval(() => diffy.render(), 500)
$ node example.js
cycles: 174. min: 45488ns. max: 843813ns. avg: 131384ns

When you're done, call gctime.stop(). For a single run, you can skip get() as stop() returns stats too: stats = gctime.stop().

The statistics follow the format of process.hrtime(): an array of [seconds, nanoseconds] where nanoseconds is the remaining part of the time that can't be represented in second precision.

The state of start(), get() and stop() is global. They throw if already started or stopped, respectively.

Install

With npm do:

npm install gctime

License

MIT © 2017-present Vincent Weevers. Contains 8 lines of code from Node.js © many people.