lighter-emitter
Version:
A lightweight JavaScript event emitter.
587 lines (578 loc) • 18.2 kB
JavaScript
/* global describe it */
var no = function () {}
var bench = global.bench || no
var EventEmitter = require('events').EventEmitter
var libs = exports.libs = {
'events.EventEmitter': EventEmitter,
'lighter-emitter': require('../lighter-emitter')
}
exports.emit = function (count, wording) {
describe('Emitter.prototype.emit (' + wording + ')', function () {
if (this.root.options) {
this.benchTime = this.root.options.benchTime * (1 - count / 10)
}
bench('zero arguments', function () {
Object.keys(libs).forEach(function (name) {
var Emitter = libs[name]
var e = new Emitter()
var f = function () {}
for (var i = 0; i < count; i++) {
e.on('a', f)
}
it(name, function () {
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
e.emit('a')
})
})
})
bench('one argument', function () {
Object.keys(libs).forEach(function (name) {
var Emitter = libs[name]
var e = new Emitter()
var f = function (a) {}
for (var i = 0; i < count; i++) {
e.on('a', f)
}
it(name, function () {
e.emit('a', 100)
e.emit('a', 101)
e.emit('a', 102)
e.emit('a', 103)
e.emit('a', 104)
e.emit('a', 105)
e.emit('a', 106)
e.emit('a', 107)
e.emit('a', 108)
e.emit('a', 109)
e.emit('a', 110)
e.emit('a', 111)
e.emit('a', 112)
e.emit('a', 113)
e.emit('a', 114)
e.emit('a', 115)
e.emit('a', 116)
e.emit('a', 117)
e.emit('a', 118)
e.emit('a', 119)
e.emit('a', 120)
e.emit('a', 121)
e.emit('a', 122)
e.emit('a', 123)
e.emit('a', 124)
e.emit('a', 125)
e.emit('a', 126)
e.emit('a', 127)
e.emit('a', 128)
e.emit('a', 129)
e.emit('a', 130)
e.emit('a', 131)
e.emit('a', 132)
e.emit('a', 133)
e.emit('a', 134)
e.emit('a', 135)
e.emit('a', 136)
e.emit('a', 137)
e.emit('a', 138)
e.emit('a', 139)
e.emit('a', 140)
e.emit('a', 141)
e.emit('a', 142)
e.emit('a', 143)
e.emit('a', 144)
e.emit('a', 145)
e.emit('a', 146)
e.emit('a', 147)
e.emit('a', 148)
e.emit('a', 149)
e.emit('a', 150)
e.emit('a', 151)
e.emit('a', 152)
e.emit('a', 153)
e.emit('a', 154)
e.emit('a', 155)
e.emit('a', 156)
e.emit('a', 157)
e.emit('a', 158)
e.emit('a', 159)
e.emit('a', 160)
e.emit('a', 161)
e.emit('a', 162)
e.emit('a', 163)
e.emit('a', 164)
e.emit('a', 165)
e.emit('a', 166)
e.emit('a', 167)
e.emit('a', 168)
e.emit('a', 169)
e.emit('a', 170)
e.emit('a', 171)
e.emit('a', 172)
e.emit('a', 173)
e.emit('a', 174)
e.emit('a', 175)
e.emit('a', 176)
e.emit('a', 177)
e.emit('a', 178)
e.emit('a', 179)
e.emit('a', 180)
e.emit('a', 181)
e.emit('a', 182)
e.emit('a', 183)
e.emit('a', 184)
e.emit('a', 185)
e.emit('a', 186)
e.emit('a', 187)
e.emit('a', 188)
e.emit('a', 189)
e.emit('a', 190)
e.emit('a', 191)
e.emit('a', 192)
e.emit('a', 193)
e.emit('a', 194)
e.emit('a', 195)
e.emit('a', 196)
e.emit('a', 197)
e.emit('a', 198)
e.emit('a', 199)
})
})
})
bench('two arguments', function () {
this.benchTime = this.parent.benchTime / 3
Object.keys(libs).forEach(function (name) {
var Emitter = libs[name]
var e = new Emitter()
var f = function (a, b) {}
for (var i = 0; i < count; i++) {
e.on('a', f)
}
it(name, function () {
e.emit('a', 100, 101)
e.emit('a', 101, 102)
e.emit('a', 102, 103)
e.emit('a', 103, 104)
e.emit('a', 104, 105)
e.emit('a', 105, 106)
e.emit('a', 106, 107)
e.emit('a', 107, 108)
e.emit('a', 108, 109)
e.emit('a', 109, 110)
e.emit('a', 110, 111)
e.emit('a', 111, 112)
e.emit('a', 112, 113)
e.emit('a', 113, 114)
e.emit('a', 114, 115)
e.emit('a', 115, 116)
e.emit('a', 116, 117)
e.emit('a', 117, 118)
e.emit('a', 118, 119)
e.emit('a', 119, 120)
e.emit('a', 120, 121)
e.emit('a', 121, 122)
e.emit('a', 122, 123)
e.emit('a', 123, 124)
e.emit('a', 124, 125)
e.emit('a', 125, 126)
e.emit('a', 126, 127)
e.emit('a', 127, 128)
e.emit('a', 128, 129)
e.emit('a', 129, 130)
e.emit('a', 130, 131)
e.emit('a', 131, 132)
e.emit('a', 132, 133)
e.emit('a', 133, 134)
e.emit('a', 134, 135)
e.emit('a', 135, 136)
e.emit('a', 136, 137)
e.emit('a', 137, 138)
e.emit('a', 138, 139)
e.emit('a', 139, 140)
e.emit('a', 140, 141)
e.emit('a', 141, 142)
e.emit('a', 142, 143)
e.emit('a', 143, 144)
e.emit('a', 144, 145)
e.emit('a', 145, 146)
e.emit('a', 146, 147)
e.emit('a', 147, 148)
e.emit('a', 148, 149)
e.emit('a', 149, 150)
e.emit('a', 150, 151)
e.emit('a', 151, 152)
e.emit('a', 152, 153)
e.emit('a', 153, 154)
e.emit('a', 154, 155)
e.emit('a', 155, 156)
e.emit('a', 156, 157)
e.emit('a', 157, 158)
e.emit('a', 158, 159)
e.emit('a', 159, 160)
e.emit('a', 160, 161)
e.emit('a', 161, 162)
e.emit('a', 162, 163)
e.emit('a', 163, 164)
e.emit('a', 164, 165)
e.emit('a', 165, 166)
e.emit('a', 166, 167)
e.emit('a', 167, 168)
e.emit('a', 168, 169)
e.emit('a', 169, 170)
e.emit('a', 170, 171)
e.emit('a', 171, 172)
e.emit('a', 172, 173)
e.emit('a', 173, 174)
e.emit('a', 174, 175)
e.emit('a', 175, 176)
e.emit('a', 176, 177)
e.emit('a', 177, 178)
e.emit('a', 178, 179)
e.emit('a', 179, 180)
e.emit('a', 180, 181)
e.emit('a', 181, 182)
e.emit('a', 182, 183)
e.emit('a', 183, 184)
e.emit('a', 184, 185)
e.emit('a', 185, 186)
e.emit('a', 186, 187)
e.emit('a', 187, 188)
e.emit('a', 188, 189)
e.emit('a', 189, 190)
e.emit('a', 190, 191)
e.emit('a', 191, 192)
e.emit('a', 192, 193)
e.emit('a', 193, 194)
e.emit('a', 194, 195)
e.emit('a', 195, 196)
e.emit('a', 196, 197)
e.emit('a', 197, 198)
e.emit('a', 198, 199)
e.emit('a', 199, 200)
})
})
})
bench('three arguments', function () {
this.benchTime = this.parent.benchTime / 3
Object.keys(libs).forEach(function (name) {
var Emitter = libs[name]
var e = new Emitter()
var f = function (a, b, c) {}
for (var i = 0; i < count; i++) {
e.on('a', f)
}
it(name, function () {
e.emit('a', 100, 101, 102)
e.emit('a', 101, 102, 103)
e.emit('a', 102, 103, 104)
e.emit('a', 103, 104, 105)
e.emit('a', 104, 105, 106)
e.emit('a', 105, 106, 107)
e.emit('a', 106, 107, 108)
e.emit('a', 107, 108, 109)
e.emit('a', 108, 109, 110)
e.emit('a', 109, 110, 111)
e.emit('a', 110, 111, 112)
e.emit('a', 111, 112, 113)
e.emit('a', 112, 113, 114)
e.emit('a', 113, 114, 115)
e.emit('a', 114, 115, 116)
e.emit('a', 115, 116, 117)
e.emit('a', 116, 117, 118)
e.emit('a', 117, 118, 119)
e.emit('a', 118, 119, 120)
e.emit('a', 119, 120, 121)
e.emit('a', 120, 121, 122)
e.emit('a', 121, 122, 123)
e.emit('a', 122, 123, 124)
e.emit('a', 123, 124, 125)
e.emit('a', 124, 125, 126)
e.emit('a', 125, 126, 127)
e.emit('a', 126, 127, 128)
e.emit('a', 127, 128, 129)
e.emit('a', 128, 129, 130)
e.emit('a', 129, 130, 131)
e.emit('a', 130, 131, 132)
e.emit('a', 131, 132, 133)
e.emit('a', 132, 133, 134)
e.emit('a', 133, 134, 135)
e.emit('a', 134, 135, 136)
e.emit('a', 135, 136, 137)
e.emit('a', 136, 137, 138)
e.emit('a', 137, 138, 139)
e.emit('a', 138, 139, 140)
e.emit('a', 139, 140, 141)
e.emit('a', 140, 141, 142)
e.emit('a', 141, 142, 143)
e.emit('a', 142, 143, 144)
e.emit('a', 143, 144, 145)
e.emit('a', 144, 145, 146)
e.emit('a', 145, 146, 147)
e.emit('a', 146, 147, 148)
e.emit('a', 147, 148, 149)
e.emit('a', 148, 149, 150)
e.emit('a', 149, 150, 151)
e.emit('a', 150, 151, 152)
e.emit('a', 151, 152, 153)
e.emit('a', 152, 153, 154)
e.emit('a', 153, 154, 155)
e.emit('a', 154, 155, 156)
e.emit('a', 155, 156, 157)
e.emit('a', 156, 157, 158)
e.emit('a', 157, 158, 159)
e.emit('a', 158, 159, 160)
e.emit('a', 159, 160, 161)
e.emit('a', 160, 161, 162)
e.emit('a', 161, 162, 163)
e.emit('a', 162, 163, 164)
e.emit('a', 163, 164, 165)
e.emit('a', 164, 165, 166)
e.emit('a', 165, 166, 167)
e.emit('a', 166, 167, 168)
e.emit('a', 167, 168, 169)
e.emit('a', 168, 169, 170)
e.emit('a', 169, 170, 171)
e.emit('a', 170, 171, 172)
e.emit('a', 171, 172, 173)
e.emit('a', 172, 173, 174)
e.emit('a', 173, 174, 175)
e.emit('a', 174, 175, 176)
e.emit('a', 175, 176, 177)
e.emit('a', 176, 177, 178)
e.emit('a', 177, 178, 179)
e.emit('a', 178, 179, 180)
e.emit('a', 179, 180, 181)
e.emit('a', 180, 181, 182)
e.emit('a', 181, 182, 183)
e.emit('a', 182, 183, 184)
e.emit('a', 183, 184, 185)
e.emit('a', 184, 185, 186)
e.emit('a', 185, 186, 187)
e.emit('a', 186, 187, 188)
e.emit('a', 187, 188, 189)
e.emit('a', 188, 189, 190)
e.emit('a', 189, 190, 191)
e.emit('a', 190, 191, 192)
e.emit('a', 191, 192, 193)
e.emit('a', 192, 193, 194)
e.emit('a', 193, 194, 195)
e.emit('a', 194, 195, 196)
e.emit('a', 195, 196, 197)
e.emit('a', 196, 197, 198)
e.emit('a', 197, 198, 199)
e.emit('a', 198, 199, 200)
e.emit('a', 199, 200, 201)
})
})
})
bench('four arguments', function () {
this.benchTime = this.parent.benchTime / 3
Object.keys(libs).forEach(function (name) {
var Emitter = libs[name]
var e = new Emitter()
var f = function (a, b, c, d) {}
for (var i = 0; i < count; i++) {
e.on('a', f)
}
it(name, function () {
e.emit('a', 100, 101, 102, 103)
e.emit('a', 101, 102, 103, 104)
e.emit('a', 102, 103, 104, 105)
e.emit('a', 103, 104, 105, 106)
e.emit('a', 104, 105, 106, 107)
e.emit('a', 105, 106, 107, 108)
e.emit('a', 106, 107, 108, 109)
e.emit('a', 107, 108, 109, 110)
e.emit('a', 108, 109, 110, 111)
e.emit('a', 109, 110, 111, 112)
e.emit('a', 110, 111, 112, 113)
e.emit('a', 111, 112, 113, 114)
e.emit('a', 112, 113, 114, 115)
e.emit('a', 113, 114, 115, 116)
e.emit('a', 114, 115, 116, 117)
e.emit('a', 115, 116, 117, 118)
e.emit('a', 116, 117, 118, 119)
e.emit('a', 117, 118, 119, 120)
e.emit('a', 118, 119, 120, 121)
e.emit('a', 119, 120, 121, 122)
e.emit('a', 120, 121, 122, 123)
e.emit('a', 121, 122, 123, 124)
e.emit('a', 122, 123, 124, 125)
e.emit('a', 123, 124, 125, 126)
e.emit('a', 124, 125, 126, 127)
e.emit('a', 125, 126, 127, 128)
e.emit('a', 126, 127, 128, 129)
e.emit('a', 127, 128, 129, 130)
e.emit('a', 128, 129, 130, 131)
e.emit('a', 129, 130, 131, 132)
e.emit('a', 130, 131, 132, 133)
e.emit('a', 131, 132, 133, 134)
e.emit('a', 132, 133, 134, 135)
e.emit('a', 133, 134, 135, 136)
e.emit('a', 134, 135, 136, 137)
e.emit('a', 135, 136, 137, 138)
e.emit('a', 136, 137, 138, 139)
e.emit('a', 137, 138, 139, 140)
e.emit('a', 138, 139, 140, 141)
e.emit('a', 139, 140, 141, 142)
e.emit('a', 140, 141, 142, 143)
e.emit('a', 141, 142, 143, 144)
e.emit('a', 142, 143, 144, 145)
e.emit('a', 143, 144, 145, 146)
e.emit('a', 144, 145, 146, 147)
e.emit('a', 145, 146, 147, 148)
e.emit('a', 146, 147, 148, 149)
e.emit('a', 147, 148, 149, 150)
e.emit('a', 148, 149, 150, 151)
e.emit('a', 149, 150, 151, 152)
e.emit('a', 150, 151, 152, 153)
e.emit('a', 151, 152, 153, 154)
e.emit('a', 152, 153, 154, 155)
e.emit('a', 153, 154, 155, 156)
e.emit('a', 154, 155, 156, 157)
e.emit('a', 155, 156, 157, 158)
e.emit('a', 156, 157, 158, 159)
e.emit('a', 157, 158, 159, 160)
e.emit('a', 158, 159, 160, 161)
e.emit('a', 159, 160, 161, 162)
e.emit('a', 160, 161, 162, 163)
e.emit('a', 161, 162, 163, 164)
e.emit('a', 162, 163, 164, 165)
e.emit('a', 163, 164, 165, 166)
e.emit('a', 164, 165, 166, 167)
e.emit('a', 165, 166, 167, 168)
e.emit('a', 166, 167, 168, 169)
e.emit('a', 167, 168, 169, 170)
e.emit('a', 168, 169, 170, 171)
e.emit('a', 169, 170, 171, 172)
e.emit('a', 170, 171, 172, 173)
e.emit('a', 171, 172, 173, 174)
e.emit('a', 172, 173, 174, 175)
e.emit('a', 173, 174, 175, 176)
e.emit('a', 174, 175, 176, 177)
e.emit('a', 175, 176, 177, 178)
e.emit('a', 176, 177, 178, 179)
e.emit('a', 177, 178, 179, 180)
e.emit('a', 178, 179, 180, 181)
e.emit('a', 179, 180, 181, 182)
e.emit('a', 180, 181, 182, 183)
e.emit('a', 181, 182, 183, 184)
e.emit('a', 182, 183, 184, 185)
e.emit('a', 183, 184, 185, 186)
e.emit('a', 184, 185, 186, 187)
e.emit('a', 185, 186, 187, 188)
e.emit('a', 186, 187, 188, 189)
e.emit('a', 187, 188, 189, 190)
e.emit('a', 188, 189, 190, 191)
e.emit('a', 189, 190, 191, 192)
e.emit('a', 190, 191, 192, 193)
e.emit('a', 191, 192, 193, 194)
e.emit('a', 192, 193, 194, 195)
e.emit('a', 193, 194, 195, 196)
e.emit('a', 194, 195, 196, 197)
e.emit('a', 195, 196, 197, 198)
e.emit('a', 196, 197, 198, 199)
e.emit('a', 197, 198, 199, 200)
e.emit('a', 198, 199, 200, 201)
e.emit('a', 199, 200, 201, 202)
})
})
})
})
}