diff --git a/benchmark/diagnostics_channel/publish.js b/benchmark/diagnostics_channel/publish.js index 3a30012ba692b8..6d8e40a6b733f6 100644 --- a/benchmark/diagnostics_channel/publish.js +++ b/benchmark/diagnostics_channel/publish.js @@ -1,29 +1,58 @@ 'use strict'; const common = require('../common.js'); -const dc = require('diagnostics_channel'); +const dc = require('node:diagnostics_channel'); const bench = common.createBenchmark(main, { n: [1e8], + checkSubscribers: [1, 0], + objSize: [10, 1e2, 1e3], subscribers: [0, 1, 10], }); function noop() {} -function main({ n, subscribers }) { +function createObj(size) { + return Array.from({ length: size }, (n) => ({ + foo: 'yarp', + nope: { + bar: '123', + a: [1, 2, 3], + baz: n, + c: {}, + b: [], + }, + })); +} + +function main({ n, subscribers, checkSubscribers, objSize }) { const channel = dc.channel('test'); for (let i = 0; i < subscribers; i++) { channel.subscribe(noop); } - const data = { - foo: 'bar', + const publishWithCheck = () => { + const data = createObj(objSize); + bench.start(); + for (let i = 0; i < n; i++) { + if (channel.hasSubscribers) { + channel.publish(data); + } + } + bench.end(n); }; - bench.start(); - for (let i = 0; i < n; i++) { - if (channel.hasSubscribers) { + const publishWithoutCheck = () => { + const data = createObj(objSize); + bench.start(); + for (let i = 0; i < n; i++) { channel.publish(data); } + bench.end(n); + }; + + if (checkSubscribers) { + publishWithCheck(); + } else { + publishWithoutCheck(); } - bench.end(n); }