| 'use strict'; |
| const common = require('../common.js'); |
| const { |
| ReadableStream, |
| ReadableStreamDefaultReader, |
| ReadableStreamBYOBReader, |
| TransformStream, |
| WritableStream, |
| } = require('node:stream/web'); |
| const assert = require('assert'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [50e3], |
| kind: [ |
| 'ReadableStream', |
| 'TransformStream', |
| 'WritableStream', |
| |
| 'ReadableStreamDefaultReader', |
| 'ReadableStreamBYOBReader', |
| |
| 'ReadableStream.tee', |
| ], |
| }); |
| |
| let readableStream; |
| let transformStream; |
| let writableStream; |
| let readableStreamDefaultReader; |
| let readableStreamBYOBReader; |
| let teeResult; |
| |
| function main({ n, kind }) { |
| switch (kind) { |
| case 'ReadableStream': |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| readableStream = new ReadableStream(); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(readableStream); |
| break; |
| case 'WritableStream': |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| writableStream = new WritableStream(); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(writableStream); |
| break; |
| case 'TransformStream': |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| transformStream = new TransformStream(); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(transformStream); |
| break; |
| case 'ReadableStreamDefaultReader': { |
| const readers = Array.from({ length: n }, () => new ReadableStream()); |
| |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| readableStreamDefaultReader = new ReadableStreamDefaultReader(readers[i]); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(readableStreamDefaultReader); |
| break; |
| } |
| case 'ReadableStreamBYOBReader': { |
| const readers = Array.from({ length: n }, () => new ReadableStream({ type: 'bytes' })); |
| |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| readableStreamBYOBReader = new ReadableStreamBYOBReader(readers[i]); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(readableStreamBYOBReader); |
| break; |
| } |
| case 'ReadableStream.tee': { |
| const streams = Array.from({ length: n }, () => new ReadableStream()); |
| |
| bench.start(); |
| for (let i = 0; i < n; ++i) |
| teeResult = streams[i].tee(); |
| bench.end(n); |
| |
| // Avoid V8 deadcode (elimination) |
| assert.ok(teeResult); |
| break; |
| } |
| default: |
| throw new Error('Invalid kind'); |
| } |
| } |