diff --git a/benchmark/streams/readable-from.js b/benchmark/streams/readable-from.js index 2dcf10ffef2732..c3990d20f988db 100644 --- a/benchmark/streams/readable-from.js +++ b/benchmark/streams/readable-from.js @@ -5,15 +5,58 @@ const Readable = require('stream').Readable; const bench = common.createBenchmark(main, { n: [1e7], + type: ['array', 'sync-generator-with-sync-values', 'sync-generator-with-async-values', 'async-generator'], }); -async function main({ n }) { - const arr = []; - for (let i = 0; i < n; i++) { - arr.push(`${i}`); +async function main({ n, type }) { + let fromArg; + + switch (type) { + case 'array': { + fromArg = []; + for (let i = 0; i < n; i++) { + fromArg.push(`${i}`); + } + + break; + } + + case 'sync-generator-with-sync-values': { + fromArg = (function* () { + for (let i = 0; i < n; i++) { + yield `${i}`; + } + })(); + + break; + } + + case 'sync-generator-with-async-values': { + fromArg = (function* () { + for (let i = 0; i < n; i++) { + yield Promise.resolve(`${i}`); + } + })(); + + break; + } + + case 'async-generator': { + fromArg = (async function* () { + for (let i = 0; i < n; i++) { + yield `${i}`; + } + })(); + + break; + } + + default: { + throw new Error(`Unknown type: ${type}`); + } } - const s = new Readable.from(arr); + const s = new Readable.from(fromArg); bench.start(); s.on('data', (data) => {