From 7d14c319a00834aaf6be854d0cb39d05cb6a4c11 Mon Sep 17 00:00:00 2001 From: Brian White Date: Sat, 21 Feb 2015 01:50:59 -0500 Subject: [PATCH] benchmark: add eventEmitter.once() benchmarks --- benchmark/events/ee-add-once.js | 23 ++++++++++++++++++ .../{ee-add-remove.js => ee-add-remove-on.js} | 0 benchmark/events/ee-emit-mixed.js | 23 ++++++++++++++++++ benchmark/events/ee-emit-multi-args-mixed.js | 24 +++++++++++++++++++ ...multi-args.js => ee-emit-multi-args-on.js} | 0 benchmark/events/ee-emit-multi-args-once.js | 20 ++++++++++++++++ .../events/{ee-emit.js => ee-emit-on.js} | 0 benchmark/events/ee-emit-once.js | 20 ++++++++++++++++ 8 files changed, 110 insertions(+) create mode 100644 benchmark/events/ee-add-once.js rename benchmark/events/{ee-add-remove.js => ee-add-remove-on.js} (100%) create mode 100644 benchmark/events/ee-emit-mixed.js create mode 100644 benchmark/events/ee-emit-multi-args-mixed.js rename benchmark/events/{ee-emit-multi-args.js => ee-emit-multi-args-on.js} (100%) create mode 100644 benchmark/events/ee-emit-multi-args-once.js rename benchmark/events/{ee-emit.js => ee-emit-on.js} (100%) create mode 100644 benchmark/events/ee-emit-once.js diff --git a/benchmark/events/ee-add-once.js b/benchmark/events/ee-add-once.js new file mode 100644 index 00000000000000..532f3be9c6b924 --- /dev/null +++ b/benchmark/events/ee-add-once.js @@ -0,0 +1,23 @@ +var common = require('../common.js'); +var events = require('events'); + +var bench = common.createBenchmark(main, {n: [25e4]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new events.EventEmitter(); + var listeners = []; + + for (var k = 0; k < 10; k += 1) + listeners.push(function() {}); + + ee.setMaxListeners(n * 10); + + bench.start(); + for (var i = 0; i < n; i += 1) { + for (var k = listeners.length; --k >= 0; /* empty */) + ee.once('dummy', listeners[k]); + } + bench.end(n); +} diff --git a/benchmark/events/ee-add-remove.js b/benchmark/events/ee-add-remove-on.js similarity index 100% rename from benchmark/events/ee-add-remove.js rename to benchmark/events/ee-add-remove-on.js diff --git a/benchmark/events/ee-emit-mixed.js b/benchmark/events/ee-emit-mixed.js new file mode 100644 index 00000000000000..979cd78ce2fac1 --- /dev/null +++ b/benchmark/events/ee-emit-mixed.js @@ -0,0 +1,23 @@ +var common = require('../common.js'); +var EventEmitter = require('events').EventEmitter; + +var bench = common.createBenchmark(main, {n: [2e6]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new EventEmitter(); + + for (var k = 0; k < 10; k += 1) { + if (k % 2) + ee.once('dummy', function() {}); + else + ee.on('dummy', function() {}); + } + + bench.start(); + for (var i = 0; i < n; i += 1) { + ee.emit('dummy'); + } + bench.end(n); +} diff --git a/benchmark/events/ee-emit-multi-args-mixed.js b/benchmark/events/ee-emit-multi-args-mixed.js new file mode 100644 index 00000000000000..49cff4894870d8 --- /dev/null +++ b/benchmark/events/ee-emit-multi-args-mixed.js @@ -0,0 +1,24 @@ +var common = require('../common.js'); +var EventEmitter = require('events').EventEmitter; + +var bench = common.createBenchmark(main, {n: [2e6]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new EventEmitter(); + var listeners = []; + + for (var k = 0; k < 10; k += 1) { + if (k % 2) + ee.once('dummy', function() {}); + else + ee.on('dummy', function() {}); + } + + bench.start(); + for (var i = 0; i < n; i += 1) { + ee.emit('dummy', 5, true); + } + bench.end(n); +} diff --git a/benchmark/events/ee-emit-multi-args.js b/benchmark/events/ee-emit-multi-args-on.js similarity index 100% rename from benchmark/events/ee-emit-multi-args.js rename to benchmark/events/ee-emit-multi-args-on.js diff --git a/benchmark/events/ee-emit-multi-args-once.js b/benchmark/events/ee-emit-multi-args-once.js new file mode 100644 index 00000000000000..bfb4497b1682cd --- /dev/null +++ b/benchmark/events/ee-emit-multi-args-once.js @@ -0,0 +1,20 @@ +var common = require('../common.js'); +var EventEmitter = require('events').EventEmitter; + +var bench = common.createBenchmark(main, {n: [2e6]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new EventEmitter(); + var listeners = []; + + for (var k = 0; k < 10; k += 1) + ee.once('dummy', function() {}); + + bench.start(); + for (var i = 0; i < n; i += 1) { + ee.emit('dummy', 5, true); + } + bench.end(n); +} diff --git a/benchmark/events/ee-emit.js b/benchmark/events/ee-emit-on.js similarity index 100% rename from benchmark/events/ee-emit.js rename to benchmark/events/ee-emit-on.js diff --git a/benchmark/events/ee-emit-once.js b/benchmark/events/ee-emit-once.js new file mode 100644 index 00000000000000..49fe3e90d1bbec --- /dev/null +++ b/benchmark/events/ee-emit-once.js @@ -0,0 +1,20 @@ +var common = require('../common.js'); +//var EventEmitter = require('../../lib/events').EventEmitter; +var EventEmitter = require('events').EventEmitter; + +var bench = common.createBenchmark(main, {n: [2e7]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new EventEmitter(); + + for (var k = 0; k < 10; k += 1) + ee.once('dummy', function() {}); + + bench.start(); + for (var i = 0; i < n; i += 1) { + ee.emit('dummy'); + } + bench.end(n); +}