summaryrefslogtreecommitdiff
path: root/benchmark/streams/readable-bigunevenread.js
diff options
context:
space:
mode:
authorBrian White <mscdex@mscdex.net>2016-05-31 13:03:59 -0400
committerBrian White <mscdex@mscdex.net>2016-06-14 15:15:34 -0400
commit686984696de00ce09ac1d56e997cf705ecb6377d (patch)
tree74b49d9ab32eb05b93e192e634ede1d5503985e4 /benchmark/streams/readable-bigunevenread.js
parentc570182a39ada502d0f65223728b0cd9e136cda0 (diff)
downloadandroid-node-v8-686984696de00ce09ac1d56e997cf705ecb6377d.tar.gz
android-node-v8-686984696de00ce09ac1d56e997cf705ecb6377d.tar.bz2
android-node-v8-686984696de00ce09ac1d56e997cf705ecb6377d.zip
stream: improve Readable.read() performance
read() performance is improved most by switching from an array to a linked list for storing buffered data. However, other changes that also contribute include: making some hot functions inlinable, faster read() argument checking, and misc code rearrangement to avoid unnecessary code execution. PR-URL: https://github.com/nodejs/node/pull/7077 Reviewed-By: Calvin Metcalf <calvin.metcalf@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'benchmark/streams/readable-bigunevenread.js')
-rw-r--r--benchmark/streams/readable-bigunevenread.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/benchmark/streams/readable-bigunevenread.js b/benchmark/streams/readable-bigunevenread.js
new file mode 100644
index 0000000000..ce6e41c5d3
--- /dev/null
+++ b/benchmark/streams/readable-bigunevenread.js
@@ -0,0 +1,32 @@
+'use strict';
+
+const common = require('../common');
+const v8 = require('v8');
+const Readable = require('stream').Readable;
+
+const bench = common.createBenchmark(main, {
+ n: [100e1]
+});
+
+function main(conf) {
+ const n = +conf.n;
+ const b = new Buffer(32);
+ const s = new Readable();
+ function noop() {}
+ s._read = noop;
+
+ // Force optimization before starting the benchmark
+ s.push(b);
+ v8.setFlagsFromString('--allow_natives_syntax');
+ eval('%OptimizeFunctionOnNextCall(s.read)');
+ s.push(b);
+ while (s.read(106));
+
+ bench.start();
+ for (var k = 0; k < n; ++k) {
+ for (var i = 0; i < 1e4; ++i)
+ s.push(b);
+ while (s.read(106));
+ }
+ bench.end(n);
+}