| 'use strict'; |
| |
| const common = require('../common'); |
| const Readable = require('stream').Readable; |
| |
| const bench = common.createBenchmark(main, { |
| n: [1e5], |
| sync: ['yes', 'no'], |
| }); |
| |
| async function main({ n, sync }) { |
| sync = sync === 'yes'; |
| |
| const s = new Readable({ |
| objectMode: true, |
| read() { |
| if (sync) { |
| this.push(1); |
| } else { |
| process.nextTick(() => { |
| this.push(1); |
| }); |
| } |
| } |
| }); |
| |
| bench.start(); |
| |
| let x = 0; |
| for await (const chunk of s) { |
| x += chunk; |
| if (x > n) { |
| break; |
| } |
| } |
| |
| // Use x to ensure V8 does not optimize away the loop as a noop. |
| console.assert(x); |
| |
| bench.end(n); |
| } |