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.
81 lines
1.4 KiB
81 lines
1.4 KiB
'use strict' |
|
|
|
var max = 100000 |
|
var async = require('async') |
|
var insync = require('insync') |
|
var neoAsync = require('neo-async') |
|
var fall = require('./')() |
|
var runWaterfall = require('run-waterfall') |
|
var waterfallize = require('waterfallize') |
|
var bench = require('fastbench') |
|
|
|
var nextDone |
|
var nextCount |
|
|
|
function benchSetImmediate (done) { |
|
nextCount = 3 |
|
nextDone = done |
|
setImmediate(somethingImmediate) |
|
} |
|
|
|
function somethingImmediate () { |
|
nextCount-- |
|
if (nextCount === 0) { |
|
nextDone() |
|
} else { |
|
setImmediate(somethingImmediate) |
|
} |
|
} |
|
|
|
function somethingB (cb) { |
|
setImmediate(cb) |
|
} |
|
|
|
function somethingA (cb) { |
|
setImmediate(cb) |
|
} |
|
|
|
var toCall = [somethingA, somethingB, somethingB] |
|
function benchAsyncWaterfall (done) { |
|
async.waterfall(toCall, done) |
|
} |
|
|
|
function benchFastFall (done) { |
|
fall(toCall, done) |
|
} |
|
|
|
function benchWaterfallize (done) { |
|
var next = waterfallize() |
|
|
|
next(toCall[0]) |
|
next(toCall[1]) |
|
next(toCall[2]) |
|
next(done) |
|
} |
|
|
|
function benchRunWaterFall (done) { |
|
runWaterfall(toCall, done) |
|
} |
|
|
|
function benchInsync (done) { |
|
insync.waterfall(toCall, done) |
|
} |
|
|
|
function benchNeoAsync (done) { |
|
neoAsync.waterfall(toCall, done) |
|
} |
|
|
|
var compiled = require('./')(toCall) |
|
|
|
var run = bench([ |
|
benchAsyncWaterfall, |
|
benchInsync, |
|
benchNeoAsync, |
|
benchRunWaterFall, |
|
benchSetImmediate, |
|
benchWaterfallize, |
|
benchFastFall, |
|
compiled |
|
], max) |
|
|
|
run(run)
|
|
|