You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.2 KiB
66 lines
1.2 KiB
'use strict' |
|
|
|
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)
|
|
|