sails-postgresql
Version:
a PostgreSQL adapter for Waterline and Sails.js
41 lines (34 loc) • 1.31 kB
JavaScript
var _ = require('@sailshq/lodash');
var Benchmark = require('benchmark');
module.exports = function runBenchmarks(name, testFns, done) {
var suite = new Benchmark.Suite({
name: name
});
_.each(testFns, function buildTest(testFn) {
suite = suite.add(testFn.name, {
defer: true,
async: true,
fn: function(deferred) {
testFn(function _afterRunningTestFn() {
deferred.resolve();
});
}
});
});
suite.on('cycle', function(event) {
console.log(' •', String(event.target));
})
.on('complete', function() {
// Time is measured in microseconds so 1000 = 1ms
var fastestMean = _.first(this.filter('fastest')).stats.mean * 1000;
var slowestMean = _.first(this.filter('slowest')).stats.mean * 1000;
var mean = {
fastest: Benchmark.formatNumber(fastestMean < 1 ? fastestMean.toFixed(2) : Math.round(fastestMean)),
slowest: Benchmark.formatNumber(slowestMean < 1 ? slowestMean.toFixed(2) : Math.round(slowestMean))
};
console.log('Fastest is ' + this.filter('fastest').map('name') + ' with an average of: ' + mean.fastest + 'ms');
console.log('Slowest is ' + this.filter('slowest').map('name') + ' with an average of: ' + mean.slowest + 'ms');
return done(undefined, this);
})
.run();
};