Skip to content

Instantly share code, notes, and snippets.

@gfx
Last active October 15, 2017 09:55
Show Gist options
  • Save gfx/c9a27952b908bd3fe4127b0a3b0fa5fa to your computer and use it in GitHub Desktop.
Save gfx/c9a27952b908bd3fe4127b0a3b0fa5fa to your computer and use it in GitHub Desktop.
"use strict";
const Benchmark = require('benchmark');
const suite = new Benchmark.Suite();
let i = 0;
let j = 0;
let k = 0;
let r0 = 0;
let r1 = 0;
let r2 = 0;
function add(a, b, cb) {
cb(a + b)
}
function addAsPromise(a, b) {
return new Promise((resolve) => add(a, b, resolve));
}
suite.add('async', async (deffered) => {
r0 += await addAsPromise(++i, 1);
deffered.resolve();
}, { defer: true });
suite.add('cb', async (deffered) => {
setImmediate(() => {
add(++j, 0, (result) => {
r1 += result;
});
deffered.resolve();
})
}, { defer: true });
suite.add('promise', async (deffered) => {
addAsPromise(++k, 1).then((r) => {
r2 += r;
deffered.resolve();
});
}, { defer: true });
suite.on('cycle', (event) => {
console.log("" + event.target);
});
suite.on('complete', (event) => {
console.log('Fastest is ' + suite.filter('fastest').map('name'));
});
suite.run({ async: true });
$ node -v
v8.6.0
$ node bench.js
sasync x 1,297,077 ops/sec ±6.16% (69 runs sampled)
cb x 634,133 ops/sec ±4.09% (73 runs sampled)
promise x 1,423,018 ops/sec ±5.17% (74 runs sampled)
Fastest is promise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment