mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const common = require('../common.js');
|
||
|
|
||
|
const { MessageChannel } = require('worker_threads');
|
||
|
const { WritableStream, TransformStream, ReadableStream } = require('stream/web');
|
||
|
|
||
|
const bench = common.createBenchmark(main, {
|
||
|
payload: ['WritableStream', 'ReadableStream', 'TransformStream'],
|
||
|
n: [1e4],
|
||
|
});
|
||
|
|
||
|
function main({ n, payload: payloadType }) {
|
||
|
let createPayload;
|
||
|
let messages = 0;
|
||
|
|
||
|
switch (payloadType) {
|
||
|
case 'WritableStream':
|
||
|
createPayload = () => new WritableStream();
|
||
|
break;
|
||
|
case 'ReadableStream':
|
||
|
createPayload = () => new ReadableStream();
|
||
|
break;
|
||
|
case 'TransformStream':
|
||
|
createPayload = () => new TransformStream();
|
||
|
break;
|
||
|
default:
|
||
|
throw new Error('Unsupported payload type');
|
||
|
}
|
||
|
|
||
|
const { port1, port2 } = new MessageChannel();
|
||
|
|
||
|
port2.onmessage = onMessage;
|
||
|
|
||
|
function onMessage() {
|
||
|
if (messages++ === n) {
|
||
|
bench.end(n);
|
||
|
port1.close();
|
||
|
} else {
|
||
|
send();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function send() {
|
||
|
const stream = createPayload();
|
||
|
|
||
|
port1.postMessage(stream, [stream]);
|
||
|
}
|
||
|
|
||
|
bench.start();
|
||
|
send();
|
||
|
}
|