bench-chain
Version:
benchmark recording - averages & graphs.
134 lines (97 loc) • 3.96 kB
Markdown
//img.shields.io/badge/⛓-fluent-9659F7.svg
[ ]: https://www.npmjs.com/package/flipchain
[ ]: https://img.shields.io/npm/v/bench-chain.svg
[ ]: https://npmjs.org/package/bench-chain
[ ]: http://img.shields.io/badge/license-mit-blue.svg?style=flat
[ ]: https://spdx.org/licenses/mit
[ ]: https://img.shields.io/gitter/room/bench-chain/pink.svg
[ ]: https://gitter.im/bench-chain/Lobby
[ ]: https://travis-ci.org/${org}/bench-chain.svg?branch=master
[ ]: https://travis-ci.org/bench-chain/bench-chain
[ ]: https://david-dm.org/bench-chain/bench-chain.svg
[ ]: https://david-dm.org/bench-chain/bench-chain
<img width="1199" alt="screen shot 2017-04-24 at 5 51 21 am" src="https://cloud.githubusercontent.com/assets/4022631/25358171/616dcc44-28f5-11e7-80ab-883ce5a9ae9a.png">
<!--
[![Standard JS Style][standard-image]][standard-url]
[ ]: https://img.shields.io/badge/%F0%9F%91%95%20code%20style-standard%2Bes6+-blue.svg
[ ]: https://github.com/aretecode/eslint-config-aretecode
-->
extension of [benchmark.js](https://benchmarkjs.com/)
```bash
yarn add bench-chain
npm i bench-chain --save
```
```js
const Bench = require('bench-chain')
```
```js
const Bench = require('bench-chain')
Bench
// location to store benchmarks
.init(__dirname, 'basic.json')
// tag current benchmarks with, to mark what changes caused differences
.tags('v1')
// actual benchmarks
.add('1 * 1', () => 1 * 1)
.add('1 + 1', () => 1 + 1)
.run()
```
```js
const Bench = require('bench-chain')
const sleep = sleepDuration => new Promise(resolve => setTimeout(resolve, sleepDuration))
Bench
.init().dir(__dirname).filename('asyncs.json').setup()
.name('sleepy')
.tags('v1,v2')
// can also use .add, and then .runAsync()
.addAsync('sleep1', async done => {
await sleep(1000)
done()
})
.addAsync('sleep2', async done => {
await sleep(2000)
done()
})
.run()
```
[ ](https://github.com/aretecode/funwithflags)
* `--graph` will show only the graph reporting, rather than run the benchmarks
* `--run-times=10` will run the test `10` times
<details>
<summary>🔋 battery parsing when available</summary>
- will be used for comparing more benchmark results with averages
- amperage (number)
- currentCapacity (number)
- percent (number)
- charging (boolean)
- temp (number)
</details>
- **mem**: operating system memory, nodejs memory
- **num**: operations a second from benchmarkjs hertz
- **sampled**: total runs samples from benchmarkjs
- **variation**: variation from benchmarkjs
- **timesFor**: microtime | performance.now times for beginning & end of each run
- **now**: Date.now for changes over time
<img width="1024" alt="screen shot 2017-04-29 at 9 08 50 pm" src="https://cloud.githubusercontent.com/assets/4022631/25561422/1aede9b4-2d20-11e7-8da3-9573ebecefa7.png">
<img width="571" alt="screen shot 2017-05-01 at 5 45 33 am" src="https://cloud.githubusercontent.com/assets/4022631/25579961/7348f63c-2e31-11e7-8195-ae928c411c31.png">

<!--
> chainable benchmark recording - averages & graphs.
[![Build Status][travis-image]][travis-url]
[![NPM version][bench-chain-npm-image]][bench-chain-npm-url]
[![MIT License][license-image]][license-url]
[![bench-chain][gitter-badge]][gitter-url]
[![Dependencies][david-deps-img]][david-deps-url]
[![fluents][fluents-image]][fluents-url]
[ ]: https: