| OLD | NEW |
| (Empty) | |
| 1 var _ = require("lodash"); |
| 2 var tasks; |
| 3 |
| 4 module.exports = [ |
| 5 { |
| 6 name: "each", |
| 7 // args lists are passed to the setup function |
| 8 args: [[10], [300], [10000]], |
| 9 setup: function(count) { |
| 10 tasks = _.range(count); |
| 11 }, |
| 12 fn: function (async, done) { |
| 13 async.each(tasks, function (num, cb) { |
| 14 async.setImmediate(cb); |
| 15 }, done); |
| 16 } |
| 17 }, |
| 18 { |
| 19 name: "eachSeries", |
| 20 args: [[10], [300], [10000]], |
| 21 setup: function(count) { |
| 22 tasks = _.range(count); |
| 23 }, |
| 24 fn: function (async, done) { |
| 25 async.eachSeries(tasks, function (num, cb) { |
| 26 async.setImmediate(cb); |
| 27 }, done); |
| 28 } |
| 29 }, |
| 30 { |
| 31 name: "eachLimit", |
| 32 args: [[10], [300], [10000]], |
| 33 setup: function(count) { |
| 34 tasks = _.range(count); |
| 35 }, |
| 36 fn: function (async, done) { |
| 37 async.eachLimit(tasks, 4, function (num, cb) { |
| 38 async.setImmediate(cb); |
| 39 }, done); |
| 40 } |
| 41 }, |
| 42 { |
| 43 name: "map", |
| 44 // args lists are passed to the setup function |
| 45 args: [[10], [300], [10000]], |
| 46 setup: function(count) { |
| 47 tasks = _.range(count); |
| 48 }, |
| 49 fn: function (async, done) { |
| 50 async.map(tasks, function (num, cb) { |
| 51 async.setImmediate(cb); |
| 52 }, done); |
| 53 } |
| 54 }, |
| 55 { |
| 56 name: "mapSeries", |
| 57 args: [[10], [300], [10000]], |
| 58 setup: function(count) { |
| 59 tasks = _.range(count); |
| 60 }, |
| 61 fn: function (async, done) { |
| 62 async.mapSeries(tasks, function (num, cb) { |
| 63 async.setImmediate(cb); |
| 64 }, done); |
| 65 } |
| 66 }, |
| 67 { |
| 68 name: "mapLimit", |
| 69 args: [[10], [300], [10000]], |
| 70 setup: function(count) { |
| 71 tasks = _.range(count); |
| 72 }, |
| 73 fn: function (async, done) { |
| 74 async.mapLimit(tasks, 4, function (num, cb) { |
| 75 async.setImmediate(cb); |
| 76 }, done); |
| 77 } |
| 78 }, |
| 79 { |
| 80 name: "eachOf", |
| 81 // args lists are passed to the setup function |
| 82 args: [[10], [300], [10000]], |
| 83 setup: function(count) { |
| 84 tasks = _.range(count); |
| 85 }, |
| 86 fn: function (async, done) { |
| 87 async.eachOf(tasks, function (num, i, cb) { |
| 88 async.setImmediate(cb); |
| 89 }, done); |
| 90 } |
| 91 }, |
| 92 { |
| 93 name: "eachOfSeries", |
| 94 args: [[10], [300], [10000]], |
| 95 setup: function(count) { |
| 96 tasks = _.range(count); |
| 97 }, |
| 98 fn: function (async, done) { |
| 99 async.eachOfSeries(tasks, function (num, i, cb) { |
| 100 async.setImmediate(cb); |
| 101 }, done); |
| 102 } |
| 103 }, |
| 104 { |
| 105 name: "eachOfLimit", |
| 106 args: [[10], [300], [10000]], |
| 107 setup: function(count) { |
| 108 tasks = _.range(count); |
| 109 }, |
| 110 fn: function (async, done) { |
| 111 async.eachOfLimit(tasks, 4, function (num, i, cb) { |
| 112 async.setImmediate(cb); |
| 113 }, done); |
| 114 } |
| 115 }, |
| 116 { |
| 117 name: "parallel", |
| 118 args: [[10], [100], [1000]], |
| 119 setup: function (count) { |
| 120 tasks = _.range(count).map(function () { |
| 121 return function (cb) { |
| 122 setImmediate(cb); |
| 123 }; |
| 124 }); |
| 125 }, |
| 126 fn: function (async, done) { |
| 127 async.parallel(tasks, done); |
| 128 } |
| 129 }, |
| 130 { |
| 131 name: "series", |
| 132 args: [[10], [100], [1000]], |
| 133 setup: function (count) { |
| 134 tasks = _.range(count).map(function () { |
| 135 return function (cb) { setImmediate(cb); }; |
| 136 }); |
| 137 }, |
| 138 fn: function (async, done) { |
| 139 async.series(tasks, done); |
| 140 } |
| 141 }, |
| 142 { |
| 143 name: "waterfall", |
| 144 args: [[10], [100], [1000]], |
| 145 setup: function (count) { |
| 146 tasks = [ |
| 147 function (cb) { |
| 148 return cb(null, 1); |
| 149 } |
| 150 ].concat(_.range(count).map(function (i) { |
| 151 return function (arg, cb) { |
| 152 setImmediate(function () { |
| 153 cb(null, i); |
| 154 }); |
| 155 }; |
| 156 })); |
| 157 }, |
| 158 fn: function (async, done) { |
| 159 async.waterfall(tasks, done); |
| 160 } |
| 161 }, |
| 162 { |
| 163 name: "queue", |
| 164 args: [[1000], [30000], [100000], [200000]], |
| 165 setup: function (count) { |
| 166 tasks = count; |
| 167 }, |
| 168 fn: function (async, done) { |
| 169 var numEntries = tasks; |
| 170 var q = async.queue(worker, 1); |
| 171 for (var i = 1; i <= numEntries; i++) { |
| 172 q.push({num: i}); |
| 173 } |
| 174 function worker(task, callback) { |
| 175 if (task.num === numEntries) { |
| 176 return done(); |
| 177 } |
| 178 setImmediate(callback); |
| 179 } |
| 180 } |
| 181 }, |
| 182 { |
| 183 name: "some - no short circuit- false", |
| 184 // args lists are passed to the setup function |
| 185 args: [[500]], |
| 186 setup: function(count) { |
| 187 tasks = _.range(count); |
| 188 }, |
| 189 fn: function (async, done) { |
| 190 async.some(tasks, function(i, cb) { |
| 191 async.setImmediate(function() { |
| 192 cb(i >= 600); |
| 193 }); |
| 194 }, done); |
| 195 } |
| 196 }, |
| 197 { |
| 198 name: "some - short circuit - true", |
| 199 // args lists are passed to the setup function |
| 200 args: [[500]], |
| 201 setup: function(count) { |
| 202 tasks = _.range(count); |
| 203 }, |
| 204 fn: function (async, done) { |
| 205 async.some(tasks, function(i, cb) { |
| 206 async.setImmediate(function() { |
| 207 cb(i >= 60); |
| 208 }); |
| 209 }, done); |
| 210 } |
| 211 }, |
| 212 { |
| 213 name: "every - no short circuit- true", |
| 214 // args lists are passed to the setup function |
| 215 args: [[500]], |
| 216 setup: function(count) { |
| 217 tasks = _.range(count); |
| 218 }, |
| 219 fn: function (async, done) { |
| 220 async.every(tasks, function(i, cb) { |
| 221 async.setImmediate(function() { |
| 222 cb(i <= 600); |
| 223 }); |
| 224 }, done); |
| 225 } |
| 226 }, |
| 227 { |
| 228 name: "every - short circuit - false", |
| 229 // args lists are passed to the setup function |
| 230 args: [[500]], |
| 231 setup: function(count) { |
| 232 tasks = _.range(count); |
| 233 }, |
| 234 fn: function (async, done) { |
| 235 async.every(tasks, function(i, cb) { |
| 236 async.setImmediate(function() { |
| 237 cb(i <= 60); |
| 238 }); |
| 239 }, done); |
| 240 } |
| 241 }, |
| 242 { |
| 243 name: "defer nextTick", |
| 244 fn: function (async, done) { |
| 245 process.nextTick(done); |
| 246 } |
| 247 }, |
| 248 { |
| 249 name: "defer setImmediate", |
| 250 fn: function (async, done) { |
| 251 setImmediate(done); |
| 252 } |
| 253 }, |
| 254 { |
| 255 name: "defer async.nextTick", |
| 256 fn: function (async, done) { |
| 257 async.nextTick(done); |
| 258 } |
| 259 }, |
| 260 { |
| 261 name: "defer async.setImmediate", |
| 262 fn: function (async, done) { |
| 263 async.setImmediate(done); |
| 264 } |
| 265 }, |
| 266 { |
| 267 name: "defer setTimeout", |
| 268 fn: function (async, done) { |
| 269 setTimeout(done, 0); |
| 270 } |
| 271 }, |
| 272 { |
| 273 name: "ensureAsync sync", |
| 274 fn: function (async, done) { |
| 275 async.ensureAsync(function (cb) { |
| 276 cb(); |
| 277 })(done); |
| 278 } |
| 279 }, |
| 280 { |
| 281 name: "ensureAsync async", |
| 282 fn: function (async, done) { |
| 283 async.ensureAsync(function (cb) { |
| 284 setImmediate(cb); |
| 285 })(done); |
| 286 } |
| 287 }, |
| 288 { |
| 289 name: "ensureAsync async noWrap", |
| 290 fn: function (async, done) { |
| 291 (function (cb) { |
| 292 setImmediate(cb); |
| 293 }(done)); |
| 294 } |
| 295 } |
| 296 ]; |
| 297 |
| OLD | NEW |