node/benchmark/webstreams/readable-read.js
2023-09-19 10:54:32 +00:00

50 lines
1.1 KiB
JavaScript

'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;
}
}
}