73 lines
1.2 KiB
JavaScript
73 lines
1.2 KiB
JavaScript
'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);
|