| '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) |