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.
		
		
		
		
		
			
		
			
				
					67 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.2 KiB
			| 
											3 years ago
										 | '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) |