%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/benchmark/webstreams/
Upload File :
Create Path :
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/benchmark/webstreams/js_transfer.js

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

Zerion Mini Shell 1.0