gctime
v0.0.2
Published
Record time spent on GC in high resolution
Readme
gctime
Record time spent on GC in high resolution.
Yields a statistic set withmin,maxandsumof duration andsize(number of cycles).
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: 131384nsWhen 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 gctimeLicense
MIT © 2017-present Vincent Weevers. Contains 8 lines of code from Node.js © many people.
