Created
December 11, 2017 11:25
-
-
Save macouella/388155b016c426803059785524c1f01c to your computer and use it in GitHub Desktop.
Comparing javascript pubsub frameworks
This file contains hidden or 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
/** | |
* EventEmitter x 2,590,624 ops/sec ±4.54% (79 runs sampled) | |
* EventEmitter2 x 9,239,432 ops/sec ±1.95% (90 runs sampled) | |
* Mitt x 3,161 ops/sec ±43.29% (10 runs sampled) | |
* Tiny Emitter x 2,380,065 ops/sec ±1.46% (94 runs sampled) | |
* PubsubJS x 231,646 ops/sec ±14.09% (64 runs sampled) | |
* Fastest is EventEmitter2 | |
*/ | |
var Benchmark = require('benchmark'); | |
var suite = new Benchmark.Suite(); | |
var TinyEmitter = require('tiny-emitter'); | |
var tinyEmitter = new TinyEmitter(); | |
var Mitt = require('mitt'); | |
var mitter = Mitt(); | |
var pubsubJS = require('pubsub-js'); | |
var EventEmitter = require('events').EventEmitter; | |
var emitter = new EventEmitter(); | |
var EventEmitter2 = require('eventemitter2').EventEmitter2; | |
var emitter2 = new EventEmitter2(); | |
var EventEmitter3 = require('events').EventEmitter; | |
var emitter3 = new EventEmitter3(); | |
suite | |
.add('EventEmitter', function() { | |
emitter.on('test1', function() { | |
1 == 1; | |
}); | |
emitter.emit('test1'); | |
emitter.removeAllListeners('test1'); | |
}) | |
.add('EventEmitter2', function() { | |
emitter2.on('test2', function() { | |
1 == 1; | |
}); | |
emitter2.emit('test2'); | |
emitter2.removeAllListeners('test2'); | |
}) | |
.add('Mitt', function() { | |
mitter.on('test3', function() { | |
1 == 1; | |
}); | |
mitter.emit('test3'); | |
mitter.off('test3'); | |
}) | |
.add('Tiny Emitter', function() { | |
tinyEmitter.on('test3', function() { | |
1 == 1; | |
}); | |
tinyEmitter.emit('test3'); | |
tinyEmitter.off('test3'); | |
}) | |
.add('PubsubJS', function() { | |
pubsubJS.subscribe('test3', function() { | |
1 == 1; | |
}); | |
pubsubJS.publish('test3'); | |
pubsubJS.unsubscribe('test3'); | |
}) | |
.on('cycle', function(event, bench) { | |
console.log(String(event.target)); | |
}) | |
.on('complete', function() { | |
console.log('\nFastest is ' + this.filter('fastest').map('name')); | |
}) | |
.run(true); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment