benchmark-suite
Advanced tools
Comparing version 0.1.4 to 0.1.5
13
index.js
@@ -8,2 +8,11 @@ var EventEmitter = require('eventemitter3'); | ||
function toJSON(results) { | ||
var json = {}; | ||
for (var key in results) { | ||
json[key] = { name: results[key].name }; | ||
json[key].stats = results[key].stats.toJSON(); | ||
} | ||
return json; | ||
} | ||
module.exports = class Suite extends EventEmitter { | ||
@@ -33,5 +42,5 @@ constructor(name, type) { | ||
} | ||
this.emit('cycle', result); | ||
this.emit('cycle', toJSON(result)); | ||
} | ||
this.emit('complete', results); | ||
this.emit('complete', toJSON(results)); | ||
} | ||
@@ -38,0 +47,0 @@ |
@@ -19,3 +19,3 @@ var Stats = require('stats-accumulator'); | ||
const startTime = Date.now(); | ||
const results = { end: { name: this.name, stats: Stats() }, iteration: { name: this.name, stats: Stats() } }; | ||
const results = { end: { name: this.name, stats: Stats() }, delta: { name: this.name, stats: Stats() } }; | ||
@@ -25,3 +25,3 @@ do { | ||
results.end.stats.update(run.end); | ||
results.iteration.stats.update(run.iteration.max); | ||
results.delta.stats.update(run.delta.max); | ||
} while (Date.now() - startTime <= time); | ||
@@ -33,5 +33,20 @@ | ||
async callibrate(options) { | ||
if (options.heapdumpTrigger) await writeSnapshot(`hd-calibrate.heapsnapshot`); | ||
await this.fn(() => {}); | ||
await this.fn(() => {}); | ||
const dump = options.heapdumpTrigger && !options.heapdumped; | ||
let dumped = false; | ||
let stats = Stats(); | ||
while (stats.n < 5) { | ||
gc(); | ||
const start = process.memoryUsage().heapUsed; | ||
await this.fn(() => {}); | ||
if (dump && !dumped) { | ||
dumped = true; | ||
await writeSnapshot(`hd-calibrate.heapsnapshot`); | ||
gc(); | ||
} | ||
gc(); | ||
const delta = process.memoryUsage().heapUsed - start; | ||
if (delta < 0) stats = Stats(); | ||
else stats.update(delta); | ||
} | ||
} | ||
@@ -44,21 +59,21 @@ | ||
let dumped = false; | ||
const dump = options.heapdumpTrigger && !options.heapdumped; | ||
let dumped = false; | ||
if (dump) { | ||
await writeSnapshot(`hd-${this.name}-${now}-start.heapsnapshot`); | ||
gc(); | ||
await writeSnapshot(`hd-${this.name}-${now}-start.heapsnapshot`); | ||
} | ||
gc(); | ||
const start = process.memoryUsage(); | ||
const start = process.memoryUsage().heapUsed; | ||
await this.fn(async () => { | ||
gc(); | ||
const heapUsed = process.memoryUsage().heapUsed - start.heapUsed; | ||
stats.update(heapUsed); | ||
if (dump && heapUsed > options.heapdumpTrigger) { | ||
if (!dumped) { | ||
dumped = true; | ||
options.heapdumped = true; | ||
await writeSnapshot(`hd-${this.name}-${now}-triggered.heapsnapshot`); | ||
} | ||
const delta = process.memoryUsage().heapUsed - start; | ||
stats.update(delta); | ||
if (dump && !dumped && delta > options.heapdumpTrigger) { | ||
dumped = true; | ||
options.heapdumped = true; | ||
await writeSnapshot(`hd-${this.name}-${now}-triggered.heapsnapshot`); | ||
gc(); | ||
} | ||
@@ -68,8 +83,9 @@ }); | ||
gc(); | ||
const end = process.memoryUsage().heapUsed - start.heapUsed; | ||
const delta = process.memoryUsage().heapUsed - start; | ||
if (dump) { | ||
await writeSnapshot(`hd-${this.name}-${now}-end.heapsnapshot`); | ||
gc(); | ||
await writeSnapshot(`hd-${this.name}-${now}-end.heapsnapshot`); | ||
} | ||
return { end: end, iteration: stats }; | ||
return { end: delta, delta: stats }; | ||
} | ||
@@ -82,5 +98,5 @@ | ||
static formatStats(stats) { | ||
var memoryStdev = Math.sqrt(stats.variance() / stats.mean) / 100; | ||
var memoryStdev = Math.sqrt(stats.variance / stats.mean) / 100; | ||
return `${humanize(stats.mean)} ±${memoryStdev.toFixed(1)}% (${stats.n} runs sampled)`; | ||
} | ||
}; |
@@ -41,5 +41,5 @@ var Stats = require('stats-accumulator'); | ||
var ops = stats.n / stats.mean; | ||
var opsStdev = stats.n / Math.sqrt(stats.variance() / stats.mean) / 100; | ||
var opsStdev = stats.n / Math.sqrt(stats.variance / stats.mean) / 100; | ||
return `${humanize(ops)} ops/s ±${opsStdev.toFixed(1)}% (${stats.n} runs sampled)`; | ||
} | ||
}; |
{ | ||
"name": "benchmark-suite", | ||
"version": "0.1.4", | ||
"version": "0.1.5", | ||
"description": "A simple suite of benchmarking tests", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
7917
159