Skip to content

Commit 51b8576

Browse files
jakecastellitargos
authored andcommitted
benchmark: add stream.compose benchmark
PR-URL: #54308 Reviewed-By: Vinícius Lourenço Claro Cardoso <[email protected]> Reviewed-By: Yagiz Nizipli <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 100225f commit 51b8576

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

benchmark/streams/compose.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'use strict';
2+
const common = require('../common.js');
3+
4+
const {
5+
PassThrough,
6+
Readable,
7+
Writable,
8+
compose,
9+
} = require('node:stream');
10+
11+
const bench = common.createBenchmark(main, {
12+
n: [1e3],
13+
});
14+
15+
function main({ n }) {
16+
const cachedPassThroughs = [];
17+
const cachedReadables = [];
18+
const cachedWritables = [];
19+
20+
for (let i = 0; i < n; i++) {
21+
const numberOfPassThroughs = 100;
22+
const passThroughs = [];
23+
24+
for (let i = 0; i < numberOfPassThroughs; i++) {
25+
passThroughs.push(new PassThrough());
26+
}
27+
28+
const readable = Readable.from(['hello', 'world']);
29+
const writable = new Writable({ objectMode: true, write: (chunk, encoding, cb) => cb() });
30+
31+
cachedPassThroughs.push(passThroughs);
32+
cachedReadables.push(readable);
33+
cachedWritables.push(writable);
34+
}
35+
36+
bench.start();
37+
for (let i = 0; i < n; i++) {
38+
const composed = compose(cachedReadables[i], ...cachedPassThroughs[i], cachedWritables[i]);
39+
composed.end();
40+
}
41+
bench.end(n);
42+
}

0 commit comments

Comments
 (0)