https://github.com/sdgluck/brolly
:umbrella: Benchmark in style
https://github.com/sdgluck/brolly
Last synced: 9 months ago
JSON representation
:umbrella: Benchmark in style
- Host: GitHub
- URL: https://github.com/sdgluck/brolly
- Owner: sdgluck
- Created: 2017-09-20T17:28:09.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-09-21T07:05:10.000Z (over 8 years ago)
- Last Synced: 2025-08-16T16:22:51.780Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 240 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
brolly
Benchmark in style
Made with ❤ at @outlandish
Run benchmarking functions in parallel...
- runs each bench in its own process using [furck](https://github.com/sdgluck/furck)
- benchmark avg. execution [time](https://github.com/sdgluck/tiny-tim) & operations/sec
- pass module dependencies to bench functions
- pass serialisable values
## Install
```sh
npm install --save brolly
```
```sh
yarn add brolly
```
## Import
```js
// ES2015
import benchmark from 'brolly'
```
```js
// CommonJS
var benchmark = require('brolly')
```
## API
### `benchmark(name, [deps, ]benches) : Function`
Create a benchmark suite.
- __name__ {String} name of the benchmark suite
- __deps__ {Array} _(optional)_ shared bench deps
- __benches__ {Array} array of benchmark functions
An element of `benches` should be a function or an array:
- if a function, this will be the bench function
- if an array, the last element should be the bench function and all
previous elements should be unique dependencies of that bench, which will
override any deps given as `deps` to the suite
Returns a bench function.
### `bench(iterations) : self`
Run the benchmark suite.
- __iterations__ {Number} number of times to run each bench function
Returns self.
### `bench.print() : self`
Log the results to the console after completion.
Returns self.
## Example
```js
import benchmark from 'brolly'
const bench = benchmark('timeout', [
// use done callback and pass serialisable value to bench fn
[1000, function timeout (time, done) {
setTimeout(done, time)
}],
// request "delay" lib to be injected into bench fn
// return Promise instead of calling done callback
['delay', function sleep (delay) {
return delay(1000)
}]
])
// run each bench 1000 times and then print the results
bench(1000).print()
```
## Contributing
All pull requests and issues welcome!
If you're not sure how, check out the [great video tutorials on egghead.io](http://bit.ly/2aVzthz)!
## License
MIT © [Sam Gluck](https://github.com/sdgluck)