Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fluents/bench-chain

benchmark recording - averages & graphs.
https://github.com/fluents/bench-chain

Last synced: 16 days ago
JSON representation

benchmark recording - averages & graphs.

Awesome Lists containing this project

README

        

# 🏋️⛓ bench-chain

> 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]

[fluents-image]: https://img.shields.io/badge/⛓-fluent-9659F7.svg
[fluents-url]: https://www.npmjs.com/package/flipchain

[bench-chain-npm-image]: https://img.shields.io/npm/v/bench-chain.svg
[bench-chain-npm-url]: https://npmjs.org/package/bench-chain
[license-image]: http://img.shields.io/badge/license-mit-blue.svg?style=flat
[license-url]: https://spdx.org/licenses/mit
[gitter-badge]: https://img.shields.io/gitter/room/bench-chain/pink.svg
[gitter-url]: https://gitter.im/bench-chain/Lobby

[travis-image]: https://travis-ci.org/fluents/bench-chain.svg?branch=master
[travis-url]: https://travis-ci.org/fluents/bench-chain

[david-deps-img]: https://david-dm.org/bench-chain/bench-chain.svg
[david-deps-url]: https://david-dm.org/bench-chain/bench-chain

screen shot 2017-04-24 at 5 51 21 am

extension of [benchmark.js](https://benchmarkjs.com/)

## 📦 install
```bash
yarn add bench-chain
npm i bench-chain --save
```

```js
const Bench = require('bench-chain')
```

## [🌐 documentation](./docs)
## [🔬 tests](./tests)
## [📘 examples](./examples)

### 👋 basic
```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()
```

### 💍 async
```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()
```

### 🚩 flags

[using funwithflags](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

### 📇 metadata

🔋 battery parsing when available
- will be used for comparing more benchmark results with averages
- amperage (number)
- currentCapacity (number)
- percent (number)
- charging (boolean)
- temp (number)

- **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

### graphs for trends and variation

screen shot 2017-04-29 at 9 08 50 pm

### grouped by tags

screen shot 2017-05-01 at 5 45 33 am

### progress bars
![digress progress](https://cloud.githubusercontent.com/assets/4022631/25579989/ac2dc194-2e31-11e7-832b-75fa16b241e3.gif)