events: improve arrayClone performance · nodejs/node@830574f · GitHub
Skip to content

Commit 830574f

Browse files
mscdexaddaleax
authored andcommitted
events: improve arrayClone performance
PR-URL: #33774 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Zeyu Yang <himself65@outlook.com>
1 parent 1a09b4d commit 830574f

4 files changed

Lines changed: 36 additions & 37 deletions

File tree

benchmark/events/ee-emit.js

Lines changed: 1 addition & 0 deletions

benchmark/events/ee-listeners-many.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

benchmark/events/ee-listeners.js

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,34 @@
22
const common = require('../common.js');
33
const EventEmitter = require('events').EventEmitter;
44

5-
const bench = common.createBenchmark(main, { n: [5e6] });
5+
const bench = common.createBenchmark(main, {
6+
n: [5e6],
7+
listeners: [5, 50],
8+
raw: ['true', 'false']
9+
});
610

7-
function main({ n }) {
11+
function main({ n, listeners, raw }) {
812
const ee = new EventEmitter();
13+
ee.setMaxListeners(listeners * 2 + 1);
914

10-
for (let k = 0; k < 5; k += 1) {
15+
for (let k = 0; k < listeners; k += 1) {
1116
ee.on('dummy0', () => {});
1217
ee.on('dummy1', () => {});
1318
}
1419

15-
bench.start();
16-
for (let i = 0; i < n; i += 1) {
17-
const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
18-
ee.listeners(dummy);
20+
if (raw === 'true') {
21+
bench.start();
22+
for (let i = 0; i < n; i += 1) {
23+
const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
24+
ee.rawListeners(dummy);
25+
}
26+
bench.end(n);
27+
} else {
28+
bench.start();
29+
for (let i = 0; i < n; i += 1) {
30+
const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
31+
ee.listeners(dummy);
32+
}
33+
bench.end(n);
1934
}
20-
bench.end(n);
2135
}

lib/events.js

Lines changed: 13 additions & 7 deletions

0 commit comments

Comments
 (0)