From b41ed29b80ea1454132e5707a978ad2ebd6b29a2 Mon Sep 17 00:00:00 2001 From: Brian White Date: Fri, 16 Mar 2018 20:35:32 -0400 Subject: stream: improve stream creation performance PR-URL: https://github.com/nodejs/node/pull/19401 Reviewed-By: Anna Henningsen Reviewed-By: Minwoo Jung Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Luigi Pinca Reviewed-By: Tiancheng "Timothy" Gu --- benchmark/streams/creation.js | 55 +++++++++++++++++++++++++++++++++ benchmark/streams/transform-creation.js | 21 ------------- 2 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 benchmark/streams/creation.js delete mode 100644 benchmark/streams/transform-creation.js (limited to 'benchmark') diff --git a/benchmark/streams/creation.js b/benchmark/streams/creation.js new file mode 100644 index 0000000000..67187f91bd --- /dev/null +++ b/benchmark/streams/creation.js @@ -0,0 +1,55 @@ +'use strict'; +const common = require('../common.js'); +const Duplex = require('stream').Duplex; +const Readable = require('stream').Readable; +const Transform = require('stream').Transform; +const Writable = require('stream').Writable; + +const bench = common.createBenchmark(main, { + n: [50e6], + kind: ['duplex', 'readable', 'transform', 'writable'] +}); + +function main({ n, kind }) { + var i = 0; + switch (kind) { + case 'duplex': + new Duplex({}); + new Duplex(); + + bench.start(); + for (; i < n; ++i) + new Duplex(); + bench.end(n); + break; + case 'readable': + new Readable({}); + new Readable(); + + bench.start(); + for (; i < n; ++i) + new Readable(); + bench.end(n); + break; + case 'writable': + new Writable({}); + new Writable(); + + bench.start(); + for (; i < n; ++i) + new Writable(); + bench.end(n); + break; + case 'transform': + new Transform({}); + new Transform(); + + bench.start(); + for (; i < n; ++i) + new Transform(); + bench.end(n); + break; + default: + throw new Error('Invalid kind'); + } +} diff --git a/benchmark/streams/transform-creation.js b/benchmark/streams/transform-creation.js deleted file mode 100644 index abfab0c8e2..0000000000 --- a/benchmark/streams/transform-creation.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; -const common = require('../common.js'); -const Transform = require('stream').Transform; -const inherits = require('util').inherits; - -const bench = common.createBenchmark(main, { - n: [1e6] -}); - -function MyTransform() { - Transform.call(this); -} -inherits(MyTransform, Transform); -MyTransform.prototype._transform = function() {}; - -function main({ n }) { - bench.start(); - for (var i = 0; i < n; ++i) - new MyTransform(); - bench.end(n); -} -- cgit v1.2.3