https://github.com/vweevers/gctime
Record time spent on GC in high resolution.
https://github.com/vweevers/gctime
garbage-collection gc nodejs nodejs-addon npm-package prebuilt-binaries
Last synced: 2 months ago
JSON representation
Record time spent on GC in high resolution.
- Host: GitHub
- URL: https://github.com/vweevers/gctime
- Owner: vweevers
- License: mit
- Created: 2018-09-10T21:00:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-12-11T17:46:07.000Z (over 4 years ago)
- Last Synced: 2025-03-28T21:39:05.671Z (2 months ago)
- Topics: garbage-collection, gc, nodejs, nodejs-addon, npm-package, prebuilt-binaries
- Language: JavaScript
- Size: 4.88 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# 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).[](https://www.npmjs.org/package/gctime)
[](https://www.npmjs.org/package/gctime)
[](http://travis-ci.org/vweevers/gctime)
[](https://ci.appveyor.com/project/vweevers/gctime)
[](https://standardjs.com)
[](https://david-dm.org/vweevers/gctime)## Usage
Continuously log GC cycles and duration:
```js
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()`](https://nodejs.org/api/process.html#process_process_hrtime_time): 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](https://npmjs.org) do:
```
npm install gctime
```## License
[MIT](LICENSE) © 2017-present Vincent Weevers. Contains 8 lines of code from Node.js [© many people](https://github.com/nodejs/node/blob/master/LICENSE).