|
2 | 2 | const common = require('../common.js');
|
3 | 3 | const {
|
4 | 4 | ReadableStream,
|
| 5 | + ReadableStreamDefaultReader, |
| 6 | + ReadableStreamBYOBReader, |
5 | 7 | TransformStream,
|
6 | 8 | WritableStream,
|
7 | 9 | } = require('node:stream/web');
|
8 | 10 | const assert = require('assert');
|
9 | 11 |
|
10 | 12 | const bench = common.createBenchmark(main, {
|
11 | 13 | n: [50e3],
|
12 |
| - kind: ['ReadableStream', 'TransformStream', 'WritableStream'], |
| 14 | + kind: [ |
| 15 | + 'ReadableStream', |
| 16 | + 'TransformStream', |
| 17 | + 'WritableStream', |
| 18 | + |
| 19 | + 'ReadableStreamDefaultReader', |
| 20 | + 'ReadableStreamBYOBReader', |
| 21 | + |
| 22 | + 'ReadableStream.tee', |
| 23 | + ], |
13 | 24 | });
|
14 | 25 |
|
15 |
| -let rs, ws, ts; |
| 26 | +let readableStream; |
| 27 | +let transformStream; |
| 28 | +let writableStream; |
| 29 | +let readableStreamDefaultReader; |
| 30 | +let readableStreamBYOBReader; |
| 31 | +let teeResult; |
16 | 32 |
|
17 | 33 | function main({ n, kind }) {
|
18 | 34 | switch (kind) {
|
19 | 35 | case 'ReadableStream':
|
20 | 36 | bench.start();
|
21 | 37 | for (let i = 0; i < n; ++i)
|
22 |
| - rs = new ReadableStream(); |
| 38 | + readableStream = new ReadableStream(); |
23 | 39 | bench.end(n);
|
24 | 40 |
|
25 | 41 | // Avoid V8 deadcode (elimination)
|
26 |
| - assert.ok(rs); |
| 42 | + assert.ok(readableStream); |
27 | 43 | break;
|
28 | 44 | case 'WritableStream':
|
29 | 45 | bench.start();
|
30 | 46 | for (let i = 0; i < n; ++i)
|
31 |
| - ws = new WritableStream(); |
| 47 | + writableStream = new WritableStream(); |
32 | 48 | bench.end(n);
|
33 | 49 |
|
34 | 50 | // Avoid V8 deadcode (elimination)
|
35 |
| - assert.ok(ws); |
| 51 | + assert.ok(writableStream); |
36 | 52 | break;
|
37 | 53 | case 'TransformStream':
|
38 | 54 | bench.start();
|
39 | 55 | for (let i = 0; i < n; ++i)
|
40 |
| - ts = new TransformStream(); |
| 56 | + transformStream = new TransformStream(); |
| 57 | + bench.end(n); |
| 58 | + |
| 59 | + // Avoid V8 deadcode (elimination) |
| 60 | + assert.ok(transformStream); |
| 61 | + break; |
| 62 | + case 'ReadableStreamDefaultReader': { |
| 63 | + const readers = Array.from({ length: n }, () => new ReadableStream()); |
| 64 | + |
| 65 | + bench.start(); |
| 66 | + for (let i = 0; i < n; ++i) |
| 67 | + readableStreamDefaultReader = new ReadableStreamDefaultReader(readers[i]); |
| 68 | + bench.end(n); |
| 69 | + |
| 70 | + // Avoid V8 deadcode (elimination) |
| 71 | + assert.ok(readableStreamDefaultReader); |
| 72 | + break; |
| 73 | + } |
| 74 | + case 'ReadableStreamBYOBReader': { |
| 75 | + const readers = Array.from({ length: n }, () => new ReadableStream({ type: 'bytes' })); |
| 76 | + |
| 77 | + bench.start(); |
| 78 | + for (let i = 0; i < n; ++i) |
| 79 | + readableStreamBYOBReader = new ReadableStreamBYOBReader(readers[i]); |
| 80 | + bench.end(n); |
| 81 | + |
| 82 | + // Avoid V8 deadcode (elimination) |
| 83 | + assert.ok(readableStreamBYOBReader); |
| 84 | + break; |
| 85 | + } |
| 86 | + case 'ReadableStream.tee': { |
| 87 | + const streams = Array.from({ length: n }, () => new ReadableStream()); |
| 88 | + |
| 89 | + bench.start(); |
| 90 | + for (let i = 0; i < n; ++i) |
| 91 | + teeResult = streams[i].tee(); |
41 | 92 | bench.end(n);
|
42 | 93 |
|
43 | 94 | // Avoid V8 deadcode (elimination)
|
44 |
| - assert.ok(ts); |
| 95 | + assert.ok(teeResult); |
45 | 96 | break;
|
| 97 | + } |
46 | 98 | default:
|
47 | 99 | throw new Error('Invalid kind');
|
48 | 100 | }
|
|
0 commit comments