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); +}