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.
		
		
		
		
		
			
		
			
				
					
					
						
							82 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							82 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)
 |