Spaces:
Running
Running
const max = 1000000 | |
const fastqueue = require('./')(worker, 1) | |
const { promisify } = require('util') | |
const immediate = promisify(setImmediate) | |
const qPromise = require('./').promise(immediate, 1) | |
const async = require('async') | |
const neo = require('neo-async') | |
const asyncqueue = async.queue(worker, 1) | |
const neoqueue = neo.queue(worker, 1) | |
function bench (func, done) { | |
const key = max + '*' + func.name | |
let count = -1 | |
console.time(key) | |
end() | |
function end () { | |
if (++count < max) { | |
func(end) | |
} else { | |
console.timeEnd(key) | |
if (done) { | |
done() | |
} | |
} | |
} | |
} | |
function benchFastQ (done) { | |
fastqueue.push(42, done) | |
} | |
function benchAsyncQueue (done) { | |
asyncqueue.push(42, done) | |
} | |
function benchNeoQueue (done) { | |
neoqueue.push(42, done) | |
} | |
function worker (arg, cb) { | |
setImmediate(cb) | |
} | |
function benchSetImmediate (cb) { | |
worker(42, cb) | |
} | |
function benchFastQPromise (done) { | |
qPromise.push(42).then(function () { done() }, done) | |
} | |
function runBench (done) { | |
async.eachSeries([ | |
benchSetImmediate, | |
benchFastQ, | |
benchNeoQueue, | |
benchAsyncQueue, | |
benchFastQPromise | |
], bench, done) | |
} | |
runBench(runBench) | |