frontend/.pnpm-store/v3/files/2b/b528fd4bec52c8f533425d6ae726528e0d713177108422998ab86f03dee4168dd66a8138609a74b42b418536cca9f3a72cad19a067bd584464cda880048f74

74 lines
1.6 KiB
Plaintext

'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];
});