diff options
author | Brian White <mscdex@mscdex.net> | 2019-08-25 04:21:33 -0400 |
---|---|---|
committer | zhangyongsheng <zhangyongsheng@youzan.com> | 2019-08-27 20:06:09 +0800 |
commit | 5ba3a2c4b6dfb928a097b36523d59cd5fa70706b (patch) | |
tree | b8962b5bf35dc271b144583576c0011a1a381b68 /benchmark | |
parent | f96f9fbe31f30d2effe3cd3a74c19a05360757a5 (diff) | |
download | android-node-v8-5ba3a2c4b6dfb928a097b36523d59cd5fa70706b.tar.gz android-node-v8-5ba3a2c4b6dfb928a097b36523d59cd5fa70706b.tar.bz2 android-node-v8-5ba3a2c4b6dfb928a097b36523d59cd5fa70706b.zip |
events: improve once() performance
PR-URL: https://github.com/nodejs/node/pull/29307
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/events/ee-once.js | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/benchmark/events/ee-once.js b/benchmark/events/ee-once.js index e1a09fb4b7..bd0a395653 100644 --- a/benchmark/events/ee-once.js +++ b/benchmark/events/ee-once.js @@ -2,18 +2,54 @@ const common = require('../common.js'); const EventEmitter = require('events').EventEmitter; -const bench = common.createBenchmark(main, { n: [2e7] }); +const bench = common.createBenchmark(main, { + n: [2e7], + argc: [0, 1, 4, 5] +}); -function main({ n }) { +function main({ n, argc }) { const ee = new EventEmitter(); function listener() {} - bench.start(); - for (var i = 0; i < n; i += 1) { - const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1'; - ee.once(dummy, listener); - ee.emit(dummy); + switch (argc) { + case 0: + bench.start(); + for (let i = 0; i < n; i += 1) { + const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1'; + ee.once(dummy, listener); + ee.emit(dummy); + } + bench.end(n); + break; + case 1: + bench.start(); + for (let i = 0; i < n; i += 1) { + const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1'; + ee.once(dummy, listener); + ee.emit(dummy, n); + } + bench.end(n); + break; + case 4: + bench.start(); + for (let i = 0; i < n; i += 1) { + const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1'; + ee.once(dummy, listener); + ee.emit(dummy, 'foo', argc, 'bar', false); + } + bench.end(n); + break; + case 5: + bench.start(); + for (let i = 0; i < n; i += 1) { + const dummy = (i % 2 === 0) ? 'dummy0' : 'dummy1'; + ee.once(dummy, listener); + ee.emit(dummy, true, 7.5, 'foo', null, n); + } + bench.end(n); + break; + default: + throw new Error('Unsupported argument count'); } - bench.end(n); } |