From c4b6e1e9e400aca2293ce35e628789d551c8d72a Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Tue, 24 Oct 2023 04:36:17 +0300 Subject: [PATCH] benchmark: add more cases to Readable.from MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/50351 Reviewed-By: Yagiz Nizipli Reviewed-By: Vinícius Lourenço Claro Cardoso --- benchmark/streams/readable-from.js | 53 +++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) 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) => {