Skip to content

Commit 65a2e80

Browse files
bmeureraddaleax
authored andcommitted
benchmark: Improve event performance tests.
Currently most of the event tests only test a single event type, which might let those benchmark take fast-paths (in V8) that aren't taken in realistic use cases, and thus the benchmarks are not good proxies of real world uses. PR-URL: #14052 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Timothy Gu <[email protected]> Reviewed-By: Michaël Zasso <[email protected]>
1 parent cf6afe3 commit 65a2e80

5 files changed

+28
-15
lines changed

benchmark/events/ee-add-remove.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ function main(conf) {
1616

1717
bench.start();
1818
for (var i = 0; i < n; i += 1) {
19-
for (k = listeners.length; --k >= 0; /* empty */)
20-
ee.on('dummy', listeners[k]);
21-
for (k = listeners.length; --k >= 0; /* empty */)
22-
ee.removeListener('dummy', listeners[k]);
19+
var dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
20+
for (k = listeners.length; --k >= 0; /* empty */) {
21+
ee.on(dummy, listeners[k]);
22+
}
23+
for (k = listeners.length; --k >= 0; /* empty */) {
24+
ee.removeListener(dummy, listeners[k]);
25+
}
2326
}
2427
bench.end(n);
2528
}

benchmark/events/ee-listener-count-on-prototype.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ function main(conf) {
99

1010
var ee = new EventEmitter();
1111

12-
for (var k = 0; k < 10; k += 1)
13-
ee.on('dummy', function() {});
12+
for (var k = 0; k < 5; k += 1) {
13+
ee.on('dummy0', function() {});
14+
ee.on('dummy1', function() {});
15+
}
1416

1517
bench.start();
1618
for (var i = 0; i < n; i += 1) {
17-
ee.listenerCount('dummy');
19+
var dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
20+
ee.listenerCount(dummy);
1821
}
1922
bench.end(n);
2023
}

benchmark/events/ee-listeners-many.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ function main(conf) {
1010
var ee = new EventEmitter();
1111
ee.setMaxListeners(101);
1212

13-
for (var k = 0; k < 100; k += 1)
14-
ee.on('dummy', function() {});
13+
for (var k = 0; k < 50; k += 1) {
14+
ee.on('dummy0', function() {});
15+
ee.on('dummy1', function() {});
16+
}
1517

1618
bench.start();
1719
for (var i = 0; i < n; i += 1) {
18-
ee.listeners('dummy');
20+
var dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
21+
ee.listeners(dummy);
1922
}
2023
bench.end(n);
2124
}

benchmark/events/ee-listeners.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ function main(conf) {
99

1010
var ee = new EventEmitter();
1111

12-
for (var k = 0; k < 10; k += 1)
13-
ee.on('dummy', function() {});
12+
for (var k = 0; k < 5; k += 1) {
13+
ee.on('dummy0', function() {});
14+
ee.on('dummy1', function() {});
15+
}
1416

1517
bench.start();
1618
for (var i = 0; i < n; i += 1) {
17-
ee.listeners('dummy');
19+
var dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
20+
ee.listeners(dummy);
1821
}
1922
bench.end(n);
2023
}

benchmark/events/ee-once.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ function main(conf) {
1313

1414
bench.start();
1515
for (var i = 0; i < n; i += 1) {
16-
ee.once('dummy', listener);
17-
ee.emit('dummy');
16+
var dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1';
17+
ee.once(dummy, listener);
18+
ee.emit(dummy);
1819
}
1920
bench.end(n);
2021
}

0 commit comments

Comments
 (0)