nanobench

Simple benchmarking tool with TAP-like output that is easy to parse

  • 所有者: mafintosh/nanobench
  • 平台:
  • 許可證: MIT License
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

nanobench

Simple benchmarking tool with TAP-like output that is easy to parse.

npm install nanobench

Usage

var bench = require('nanobench')

bench('sha256 200.000 times', function (b) {
  var crypto = require('crypto')
  var data = new Buffer('hello world')

  b.start()

  for (var i = 0; i < 200000; i++) {
    data = crypto.createHash('sha256').update(data).digest()
  }

  b.end()
})

bench('sha1 200.000 times', function (b) {
  var crypto = require('crypto')
  var data = new Buffer('hello world')

  b.start()

  for (var i = 0; i < 200000; i++) {
    data = crypto.createHash('sha1').update(data).digest()
  }

  b.end()
})

Running the above will produce output similar to this:

NANOBENCH version 2
> node example.js

# sha1 200.000 times
ok ~554 ms (0 s + 554449000 ns)

# sha256 200.000 times
ok ~598 ms (0 s + 597703365 ns)

all benchmarks completed
ok ~1.15 s (1 s + 152152365 ns)

API

benchmark(name, run)

Add a new benchmark. run is called with a benchmark object, b that has the following methods

  • b.start() - Start the benchmark. If not called the bench will be tracked from the beginning of the function.
  • b.end() - End the benchmark.
  • b.error(err) - Benchmark failed. Report error.
  • b.log(msg) - Log out a message

benchmark.skip(name, run)

Skip a benchmark.

benchmark.only(name, run)

Only run this benchmark.

CLI

If you have multiple benchmarks as different files you can use the cli benchmark runner to run them all

npm install -g nanobench
nanobench benchmarks/*.js

Comparing benchmarks

A comparison tool for comparing two benchmark outputs is included as well.
This is useful if fx you ran a benchmark on two different git checkouts and want to compare which
one was the fastest one

> git checkout hash-using-sha256
> node benchmark.js > output-sha256
> git checkout hash-using-blake2b
> node benchmark.js > output-blake2b

nanobench-compare output-sha256 output-blake2b

The compare tool will print out something like this

NANOBENCH version 2, NANOBENCH version 2
> node benchmark.js, > node benchmark.js, # hashing 200.000 times          >>>   # hashing 200.000 times
# (using sha256)                 >>>   # (using blake2b)
ok ~591 ms (0 s + 590687187 ns)  >>>   ok ~95 ms (0 s + 95347216 ns), all benchmarks completed         >>>   all benchmarks completed
ok ~591 ms (0 s + 590687187 ns)  >>>   ok ~95 ms (0 s + 95347216 ns), ```

Where `>>>` means that right one was faster, `<<<` that the left one was, and `===` that they were within 5% of other



## Parser

An parser for the output format is included as well. You can require it from node using

``` js
var parse = require('nanobench/parse')
var output = parse(outputAsString)
console.log(output)

If you parse the above example output an object similar to this will be printed out

{ type: 'NANOBENCH',
  version: 2,
  command: 'nanobench example.js',
  benchmarks:
   [ { name: 'sha256 200.000 times',
       output: [],
       error: null,
       time: [Object] },
     { name: 'sha1 200.000 times',
       output: [],
       error: null,
       time: [Object] },
     { name: 'sha256 200.000 times',
       output: [],
       error: null,
       time: [Object] } ],
  error: null,
  time: [ 1, 802600099 ] }

License

MIT

主要指標

概覽
名稱與所有者mafintosh/nanobench
主編程語言JavaScript
編程語言JavaScript (語言數: 1)
平台
許可證MIT License
所有者活动
創建於2016-11-01 14:49:54
推送於2022-08-23 09:41:09
最后一次提交2022-08-23 11:41:03
發布數8
最新版本名稱v3.0.0 (發布於 2022-08-23 11:41:03)
第一版名稱v1.0.0 (發布於 2016-11-01 15:50:02)
用户参与
星數170
關注者數6
派生數8
提交數17
已啟用問題?
問題數7
打開的問題數4
拉請求數2
打開的拉請求數2
關閉的拉請求數1
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?