From 7ece950ffedd09a698fc4e81c49da024375aa50e Mon Sep 17 00:00:00 2001 From: Brian White Date: Sat, 24 Dec 2016 21:58:36 -0500 Subject: events: improve once() performance This commit takes advantage of the performance improvements V8 has made to function.bind() in V8 5.4 and uses it to avoid constant recompilation/reoptimization of the wrapper closure used in once(). This change results in ~27% performance increase for once(). PR-URL: https://github.com/nodejs/node/pull/10445 Reviewed-By: Luigi Pinca Reviewed-By: Teddy Katz Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- benchmark/events/ee-once.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 benchmark/events/ee-once.js (limited to 'benchmark') diff --git a/benchmark/events/ee-once.js b/benchmark/events/ee-once.js new file mode 100644 index 00000000000..29ea562c406 --- /dev/null +++ b/benchmark/events/ee-once.js @@ -0,0 +1,20 @@ +'use strict'; +var common = require('../common.js'); +var EventEmitter = require('events').EventEmitter; + +var bench = common.createBenchmark(main, {n: [2e7]}); + +function main(conf) { + var n = conf.n | 0; + + var ee = new EventEmitter(); + + function listener() {} + + bench.start(); + for (var i = 0; i < n; i += 1) { + ee.once('dummy', listener); + ee.emit('dummy'); + } + bench.end(n); +} -- cgit v1.2.3