Skip to content

Instantly share code, notes, and snippets.

@macouella
Created December 11, 2017 11:25
Show Gist options
  • Save macouella/388155b016c426803059785524c1f01c to your computer and use it in GitHub Desktop.
Save macouella/388155b016c426803059785524c1f01c to your computer and use it in GitHub Desktop.
Comparing javascript pubsub frameworks
/**
* 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