'use strict' ;
const benchmark = require('benchmark' );
const crypto = require('crypto' );
const WebSocket = require('..' );
const Receiver = WebSocket.Receiver;
const Sender = WebSocket.Sender;
const options = {
fin: true ,
rsv1: false ,
mask: true ,
readOnly: false
};
function createBinaryFrame(length) {
const list = Sender.frame(crypto.randomBytes(length), {
opcode: 0 x02,
...options
});
return Buffer.concat(list);
}
const pingFrame1 = Buffer.concat(
Sender.frame(crypto.randomBytes(5 ), { opcode: 0 x09, ...options })
);
const textFrame = Buffer.from('819461616161' + '61' .repeat(20 ), 'hex' );
const pingFrame2 = Buffer.from('8980146e915a' , 'hex' );
const binaryFrame1 = createBinaryFrame(125 );
const binaryFrame2 = createBinaryFrame(65535 );
const binaryFrame3 = createBinaryFrame(200 * 1024 );
const binaryFrame4 = createBinaryFrame(1024 * 1024 );
const suite = new benchmark.Suite();
const receiver = new Receiver({
binaryType: 'nodebuffer' ,
extensions: {},
isServer: true ,
skipUTF8Validation: false
});
suite.add('ping frame (5 bytes payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(pingFrame1, deferred.resolve.bind(deferred));
}
});
suite.add('ping frame (no payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(pingFrame2, deferred.resolve.bind(deferred));
}
});
suite.add('text frame (20 bytes payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(textFrame, deferred.resolve.bind(deferred));
}
});
suite.add('binary frame (125 bytes payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(binaryFrame1, deferred.resolve.bind(deferred));
}
});
suite.add('binary frame (65535 bytes payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(binaryFrame2, deferred.resolve.bind(deferred));
}
});
suite.add('binary frame (200 KiB payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(binaryFrame3, deferred.resolve.bind(deferred));
}
});
suite.add('binary frame (1 MiB payload)' , {
defer: true ,
fn: (deferred) => {
receiver.write(binaryFrame4, deferred.resolve.bind(deferred));
}
});
suite.on('cycle' , (e) => console.log(e.target.toString()));
if (require.main === module) {
suite.run({ async: true });
} else {
module.exports = suite;
}
Messung V0.5 in Prozent C=86 H=92 G=88
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-06)
¤
*© Formatika GbR, Deutschland