Skip to content

Commit

Permalink
benchmark: add a benchmark for read() of ReadableStreams
Browse files Browse the repository at this point in the history
Refs: nodejs/performance#82
PR-URL: nodejs#49622
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
  • Loading branch information
debadree25 authored and alexfernandez committed Nov 1, 2023
1 parent 85fe76c commit 11f4cce
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions benchmark/webstreams/readable-read.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict';
const common = require('../common.js');
const { ReadableStream } = require('node:stream/web');

const bench = common.createBenchmark(main, {
n: [1e5],
type: ['normal', 'byob'],
});

async function main({ n, type }) {
switch (type) {
case 'normal': {
const rs = new ReadableStream({
pull: function(controller) {
controller.enqueue('a');
},
});
const reader = rs.getReader();
let x = null;
bench.start();
for (let i = 0; i < n; i++) {
const { value } = await reader.read();
x = value;
}
bench.end(n);
console.assert(x);
break;
}
case 'byob': {
const encode = new TextEncoder();
const rs = new ReadableStream({
type: 'bytes',
pull: function(controller) {
controller.enqueue(encode.encode('a'));
},
});
const reader = rs.getReader({ mode: 'byob' });
let x = null;
bench.start();
for (let i = 0; i < n; i++) {
const { value } = await reader.read(new Uint8Array(1));
x = value;
}
bench.end(n);
console.assert(x);
break;
}
}
}

0 comments on commit 11f4cce

Please sign in to comment.