benchmark: calibrate config dgram multi-buffer

PR-URL: https://github.com/nodejs/node/pull/59696
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
Bruno Rodrigues 2025-09-13 21:39:40 -03:00 committed by GitHub
parent 1442023134
commit 5ed1a47bab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,18 +5,18 @@ const common = require('../common.js');
const dgram = require('dgram');
const PORT = common.PORT;
// `num` is the number of send requests to queue up each time.
// `n` is the number of send requests to queue up each time.
// Keep it reasonably high (>10) otherwise you're benchmarking the speed of
// event loop cycles more than anything else.
const bench = common.createBenchmark(main, {
len: [64, 256, 1024],
num: [100],
chunks: [1, 2, 4, 8],
len: [64, 512, 1024],
n: [100],
chunks: [1, 8],
type: ['send', 'recv'],
dur: [5],
});
function main({ dur, len, num, type, chunks }) {
function main({ dur, len, n, type, chunks }) {
const chunk = [];
for (let i = 0; i < chunks; i++) {
chunk.push(Buffer.allocUnsafe(Math.round(len / chunks)));
@ -26,11 +26,11 @@ function main({ dur, len, num, type, chunks }) {
const socket = dgram.createSocket('udp4');
function onsend() {
if (sent++ % num === 0) {
if (sent++ % n === 0) {
// The setImmediate() is necessary to have event loop progress on OSes
// that only perform synchronous I/O on nonblocking UDP sockets.
setImmediate(() => {
for (let i = 0; i < num; i++) {
for (let i = 0; i < n; i++) {
socket.send(chunk, PORT, '127.0.0.1', onsend);
}
});