From 3bb764a58a773919dd755396f335399da85969bc Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 15 Sep 2022 09:07:22 -0400 Subject: [PATCH] events: add unique events benchmark Co-authored-by: Brian White PR-URL: https://github.com/nodejs/node/pull/44657 Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Minwoo Jung --- benchmark/events/ee-listen-unique.js | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 benchmark/events/ee-listen-unique.js diff --git a/benchmark/events/ee-listen-unique.js b/benchmark/events/ee-listen-unique.js new file mode 100644 index 00000000000000..673e8b274166b9 --- /dev/null +++ b/benchmark/events/ee-listen-unique.js @@ -0,0 +1,35 @@ +'use strict'; +const common = require('../common.js'); +const { EventEmitter } = require('events'); + +const bench = common.createBenchmark(main, { + events: [1, 2, 3, 5, 10, 20], + n: [1e6], +}); + +function main({ events, n }) { + const ee = new EventEmitter(); + const listeners = []; + + for (let k = 0; k < 10; k += 1) + listeners.push(() => {}); + + const eventNames = []; + for (let k = 0; k < events; ++k) + eventNames.push(`dummy${k}`); + + bench.start(); + for (let i = 0; i < n; i += 1) { + for (const eventName of eventNames) { + for (let k = listeners.length; --k >= 0; /* empty */) { + ee.on(eventName, listeners[k]); + } + } + for (const eventName of eventNames) { + for (let k = listeners.length; --k >= 0; /* empty */) { + ee.removeListener(eventName, listeners[k]); + } + } + } + bench.end(n); +}