From 86169a3e2777d10b257d4704187ff99a80c48d27 Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Fri, 22 Aug 2025 16:24:12 -0300 Subject: [PATCH 1/2] benchmark: calibrate config array-vs-concat According to https://github.com/nodejs/performance/issues/186 this benchmark was taking 160 secs for a single run. Based on a research in a dedicated machine, the results doesn't have variation based on the configs, so we don't need to bench all variations. Signed-off-by: RafaelGSS --- benchmark/dgram/array-vs-concat.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/benchmark/dgram/array-vs-concat.js b/benchmark/dgram/array-vs-concat.js index b5662acfc4033b..1289421bb1e75c 100644 --- a/benchmark/dgram/array-vs-concat.js +++ b/benchmark/dgram/array-vs-concat.js @@ -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 n 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, 512, 1024], - num: [100], - chunks: [1, 2, 4, 8], + len: [64, 512, 1024], + n: [100], + chunks: [1, 4], type: ['concat', 'multi'], 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))); @@ -28,11 +28,11 @@ function main({ dur, len, num, type, chunks }) { const onsend = type === 'concat' ? onsendConcat : onsendMulti; function onsendConcat() { - 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(Buffer.concat(chunk), PORT, '127.0.0.1', onsend); } }); @@ -40,11 +40,11 @@ function main({ dur, len, num, type, chunks }) { } function onsendMulti() { - 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); } }); From b5fa6545c9c81ccc66fe1b9be1b8fa87a8d7b9de Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Mon, 25 Aug 2025 10:33:00 -0300 Subject: [PATCH 2/2] fixup! benchmark: calibrate config array-vs-concat --- benchmark/dgram/array-vs-concat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/dgram/array-vs-concat.js b/benchmark/dgram/array-vs-concat.js index 1289421bb1e75c..c859771e711095 100644 --- a/benchmark/dgram/array-vs-concat.js +++ b/benchmark/dgram/array-vs-concat.js @@ -5,7 +5,7 @@ const common = require('../common.js'); const dgram = require('dgram'); const PORT = common.PORT; -// `n` is the n 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, {