Browse Source

add benchmark.js benchmark (for #20)

ensures statistical significance
master
Feross Aboukhadijeh 9 years ago
parent
commit
a99e0697be
  1. 14
      bench/basic.js
  2. 30
      bench/bench.js
  3. 1
      package.json

14
bench/basic.js

@ -0,0 +1,14 @@
var random = require('crypto').pseudoRandomBytes
var b64 = require('../')
var data = random(1e6).toString('base64')
var start = Date.now()
var raw = b64.toByteArray(data)
var middle = Date.now()
data = b64.fromByteArray(raw)
var end = Date.now()
console.log('decode ms, decode ops/ms, encode ms, encode ops/ms')
console.log(
middle - start, data.length / (middle - start),
end - middle, data.length / (end - middle))

30
bench/bench.js

@ -1,14 +1,22 @@
var random = require('crypto').pseudoRandomBytes
var base64 = require('../')
var benchmark = require('benchmark')
var b64 = require('../')
var suite = new benchmark.Suite()
var random = require('crypto').pseudoRandomBytes
var data = random(1e6).toString('base64')
var start = Date.now()
var raw = b64.toByteArray(data)
var middle = Date.now()
data = b64.fromByteArray(raw)
var end = Date.now()
var raw = base64.toByteArray(data)
console.log('decode ms, decode ops/ms, encode ms, encode ops/ms')
console.log(
middle - start, data.length / (middle - start),
end - middle, data.length / (end - middle))
suite
.add('base64.toByteArray() (decode)', function () {
var raw2 = base64.toByteArray(data) // eslint-disable-line no-unused-vars
})
.add('base64.fromByteArray() (encode)', function () {
var data2 = base64.fromByteArray(raw) // eslint-disable-line no-unused-vars
})
.on('error', function (event) {
console.error(event.target.error.stack)
})
.on('cycle', function (event) {
console.log(String(event.target))
})
.run({ async: true })

1
package.json

@ -14,6 +14,7 @@
"license": "MIT",
"dependencies": {},
"devDependencies": {
"benchmark": "^2.1.0",
"standard": "^6.0.5",
"tape": "4.x"
}

Loading…
Cancel
Save