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