Last active
December 15, 2015 22:59
-
-
Save morphar/5336708 to your computer and use it in GitHub Desktop.
A quick test to get some rough performance numbers for events. roughly these are the numbers: no events = 52ms, with events + self listener = 432ms, with events but no listeners = 1203ms, with events and checks for listeners = 1081ms. Speed difference from no events to with events are from x 8.3 to x 23.1!!!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var util = require('util'); | |
var events = require('events'); | |
var testRuns = 10000000; | |
// A class without event emitter | |
var BlaClass0 = function() { }; | |
BlaClass0.prototype.doCalc = function() { | |
var bla = 3.14 * 1234567890; | |
return bla; | |
}; | |
// A class with an event emitter, that listens for it's own 'result' event | |
var BlaClass1 = function() { | |
events.EventEmitter.call(this); | |
this.on('result', function() {}); | |
}; | |
util.inherits(BlaClass1, events.EventEmitter); | |
BlaClass1.prototype.doCalc = function() { | |
var bla = 3.14 * 1234567890; | |
this.emit('result', bla); | |
}; | |
// A similar class with an event emitter, that DOES NOT listen for it's own 'result' event | |
var BlaClass2 = function() { | |
events.EventEmitter.call(this); | |
}; | |
util.inherits(BlaClass2, events.EventEmitter); | |
BlaClass2.prototype.doCalc = function() { | |
var bla = 3.14 * 1234567890; | |
this.emit('result', bla); | |
}; | |
// A class with an event emitter, that checks for listeners before emitting | |
var BlaClass3 = function() { | |
events.EventEmitter.call(this); | |
}; | |
util.inherits(BlaClass3, events.EventEmitter); | |
BlaClass3.prototype.doCalc = function() { | |
var bla = 3.14 * 1234567890; | |
if(this.listeners('result').length > 0) { | |
this.emit('result', bla); | |
} | |
}; | |
var blaClass0 = new BlaClass0(); | |
console.time('blaClass0.doCalc'); | |
for(var i=0 ; i < testRuns ; i++) { | |
blaClass0.doCalc(); | |
} | |
console.timeEnd('blaClass0.doCalc'); | |
var blaClass1 = new BlaClass1(); | |
console.time('blaClass1.doCalc'); | |
for(var i=0 ; i < testRuns ; i++) { | |
blaClass1.doCalc(); | |
} | |
console.timeEnd('blaClass1.doCalc'); | |
var blaClass2 = new BlaClass2(); | |
console.time('blaClass2.doCalc'); | |
for(var i=0 ; i < testRuns ; i++) { | |
blaClass2.doCalc(); | |
} | |
console.timeEnd('blaClass2.doCalc'); | |
var blaClass3 = new BlaClass3(); | |
console.time('blaClass3.doCalc'); | |
for(var i=0 ; i < testRuns ; i++) { | |
blaClass3.doCalc(); | |
} | |
console.timeEnd('blaClass3.doCalc'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment