/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
benchmark/webstreams/tee.js
44 строки
999 B
Matteo Collina
stream: use the ring buffer for pending BYOB pull-into descriptors
01 авг 2026, 01:33
Не верифицирован
01 авг 2026, 01:33
c543cfb
Код
Авторство
О чём код?
'use strict'; const common = require('../common.js'); const { ReadableStream } = require('node:stream/web'); const bench = common.createBenchmark(main, { n: [1e5], type: ['normal', 'bytes'], }); async function main({ n, type }) { let i = 0; const source = type === 'bytes' ? { type: 'bytes', pull(controller) { if (i++ < n) controller.enqueue(new Uint8Array(16)); else controller.close(); }, } : { pull(controller) { if (i++ < n) controller.enqueue('a'); else controller.close(); }, }; const rs = new ReadableStream(source); const [branch1, branch2] = rs.tee(); const reader1 = branch1.getReader(); const reader2 = branch2.getReader(); let reads = 0; bench.start(); for (;;) { const [result1, result2] = await Promise.all([ reader1.read(), reader2.read(), ]); if (result1.done || result2.done) break; reads++; } bench.end(reads); console.assert(reads === n); }