summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2016-12-24 21:58:36 -0500
committerBrian White <mscdex@mscdex.net>2016-12-28 21:23:25 -0500
commit4c9dd6822eb9520588e4d06d251ce8e32469d4bc (patch)
treefda51b41a15ca7b84309d4987c032f56e7266649 /benchmark
parent627fa9309531fa36d99214b872261ab4f8145376 (diff)
downloadandroid-node-v8-4c9dd6822eb9520588e4d06d251ce8e32469d4bc.tar.gz
android-node-v8-4c9dd6822eb9520588e4d06d251ce8e32469d4bc.tar.bz2
android-node-v8-4c9dd6822eb9520588e4d06d251ce8e32469d4bc.zip
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 <luigipinca@gmail.com> Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/events/ee-once.js20
1 files changed, 20 insertions, 0 deletions
diff --git a/benchmark/events/ee-once.js b/benchmark/events/ee-once.js
new file mode 100644
index 0000000000..29ea562c40
--- /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);
+}