| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- var path = require("path"),
 
- 	async = require("async"),
 
- 	aggregate = require("../../../");
 
- module.exports = function _runner(opts) {
 
- 	var testName = path.basename(opts.module.filename),
 
- 		testTime = Date.now();
 
- 	// run for different input sizes
 
- 	async.map(
 
- 		opts.sizes,
 
- 		function mapper(size, nextSize) {
 
- 			var datas = [];
 
- 			for (var i = 0, n = size; i < n; i++) {
 
- 				var input = opts.generateInputDoc(i, size);
 
- 				if (input instanceof Array) {
 
- 					datas.push.apply(datas, input);
 
- 				} else {
 
- 					datas.push(input);
 
- 				}
 
- 			}
 
- 			// run for a couple of iterations
 
- 			var iterations = Array.apply(null, new Array(opts.nIterations)).map(Number);
 
- 			async.map(
 
- 				iterations,
 
- 				function mapper(iteration, nextIteration) {
 
- 					var t0 = Date.now();
 
- 					aggregate(opts.pipeline, datas, function(err, docs) {
 
- 						if (err) return nextIteration(err);
 
- 						return nextIteration(null, {
 
- 							ms: Date.now() - t0,
 
- 							//docs: docs.length,
 
- 							//doc0: docs[0],
 
- 						});
 
- 					});
 
- 				},
 
- 				function done(err, iterations) {
 
- 					if (err) return nextSize(err);
 
- 					// get avg
 
- 					var sum = 0;
 
- 					iterations.forEach(function(iteration) {
 
- 						sum += iteration.ms;
 
- 					});
 
- 					// report results
 
- 					console.log("%j", {
 
- 						n: testName,
 
- 						t: testTime,
 
- 						inputs: size,
 
- 						avgMs: sum / iterations.length,
 
- 						iterations: iterations,
 
- 					});
 
- 				}
 
- 			);
 
- 		},
 
- 		function done(err, sizes) {
 
- 			if (err) throw err;
 
- 		}
 
- 	);
 
- };
 
 
  |