diff options
author | Brian White <mscdex@mscdex.net> | 2016-12-24 21:58:36 -0500 |
---|---|---|
committer | Brian White <mscdex@mscdex.net> | 2016-12-28 21:23:25 -0500 |
commit | 4c9dd6822eb9520588e4d06d251ce8e32469d4bc (patch) | |
tree | fda51b41a15ca7b84309d4987c032f56e7266649 /benchmark | |
parent | 627fa9309531fa36d99214b872261ab4f8145376 (diff) | |
download | android-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.js | 20 |
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); +} |