74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
// Benchmark comparing performance of event emit for single listener
 | 
						|
// To run it, do following in memoizee package path:
 | 
						|
//
 | 
						|
// $ npm install eventemitter2 signals
 | 
						|
// $ node benchmark/single-on.js
 | 
						|
 | 
						|
var forEach    = require('es5-ext/object/for-each')
 | 
						|
  , pad        = require('es5-ext/string/#/pad')
 | 
						|
 | 
						|
  , now = Date.now
 | 
						|
 | 
						|
  , time, count = 1000000, i, data = {}
 | 
						|
  , ee, native, ee2, signals, a = {}, b = {};
 | 
						|
 | 
						|
ee = (function () {
 | 
						|
	var ee = require('../');
 | 
						|
	return ee().on('test', function () { return arguments; });
 | 
						|
}());
 | 
						|
 | 
						|
native = (function () {
 | 
						|
	var ee = require('events');
 | 
						|
	return (new ee.EventEmitter()).on('test', function () { return arguments; });
 | 
						|
}());
 | 
						|
 | 
						|
ee2 = (function () {
 | 
						|
	var ee = require('eventemitter2');
 | 
						|
	return (new ee.EventEmitter2()).on('test', function () { return arguments; });
 | 
						|
}());
 | 
						|
 | 
						|
signals = (function () {
 | 
						|
	var Signal = require('signals')
 | 
						|
	  , ee = { test: new Signal() };
 | 
						|
	ee.test.add(function () { return arguments; });
 | 
						|
	return ee;
 | 
						|
}());
 | 
						|
 | 
						|
console.log("Emit for single listener", "x" + count + ":\n");
 | 
						|
 | 
						|
i = count;
 | 
						|
time = now();
 | 
						|
while (i--) {
 | 
						|
	ee.emit('test', a, b);
 | 
						|
}
 | 
						|
data["event-emitter (this implementation)"] = now() - time;
 | 
						|
 | 
						|
i = count;
 | 
						|
time = now();
 | 
						|
while (i--) {
 | 
						|
	native.emit('test', a, b);
 | 
						|
}
 | 
						|
data["EventEmitter (Node.js native)"] = now() - time;
 | 
						|
 | 
						|
i = count;
 | 
						|
time = now();
 | 
						|
while (i--) {
 | 
						|
	ee2.emit('test', a, b);
 | 
						|
}
 | 
						|
data.EventEmitter2 = now() - time;
 | 
						|
 | 
						|
i = count;
 | 
						|
time = now();
 | 
						|
while (i--) {
 | 
						|
	signals.test.dispatch(a, b);
 | 
						|
}
 | 
						|
data.Signals = now() - time;
 | 
						|
 | 
						|
forEach(data, function (value, name, obj, index) {
 | 
						|
	console.log(index + 1 + ":",  pad.call(value, " ", 5), name);
 | 
						|
}, null, function (a, b) {
 | 
						|
	return this[a] - this[b];
 | 
						|
});
 |