3 // Benchmark comparing performance of event emit for many listeners
4 // To run it, do following in memoizee package path:
6 // $ npm install eventemitter2 signals
7 // $ node benchmark/many-on.js
9 var forEach = require('es5-ext/object/for-each')
10 , pad = require('es5-ext/string/#/pad')
14 , time, count = 1000000, i, data = {}
15 , ee, native, ee2, signals, a = {}, b = {};
18 var ee = require('../')();
19 ee.on('test', function () { return arguments; });
20 ee.on('test', function () { return arguments; });
21 return ee.on('test', function () { return arguments; });
24 native = (function () {
25 var ee = require('events');
26 ee = new ee.EventEmitter();
27 ee.on('test', function () { return arguments; });
28 ee.on('test', function () { return arguments; });
29 return ee.on('test', function () { return arguments; });
33 var ee = require('eventemitter2');
34 ee = new ee.EventEmitter2();
35 ee.on('test', function () { return arguments; });
36 ee.on('test', function () { return arguments; });
37 return ee.on('test', function () { return arguments; });
40 signals = (function () {
41 var Signal = require('signals')
42 , ee = { test: new Signal() };
43 ee.test.add(function () { return arguments; });
44 ee.test.add(function () { return arguments; });
45 ee.test.add(function () { return arguments; });
49 console.log("Emit for 3 listeners", "x" + count + ":\n");
54 ee.emit('test', a, b);
56 data["event-emitter (this implementation)"] = now() - time;
61 native.emit('test', a, b);
63 data["EventEmitter (Node.js native)"] = now() - time;
68 ee2.emit('test', a, b);
70 data.EventEmitter2 = now() - time;
75 signals.test.dispatch(a, b);
77 data.Signals = now() - time;
79 forEach(data, function (value, name, obj, index) {
80 console.log(index + 1 + ":", pad.call(value, " ", 5), name);
81 }, null, function (a, b) {
82 return this[a] - this[b];