From d1603cd2f5324902da16dcd1e4dc8747306d6963 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Mon, 23 Dec 2019 11:43:36 +0100 Subject: [PATCH 1/5] benchmark: include writev in benchmark Currently we only consider write when benchmarking. --- benchmark/streams/writable-manywrites.js | 27 +++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/benchmark/streams/writable-manywrites.js b/benchmark/streams/writable-manywrites.js index ebd83779b76158..304b65cd39aa87 100644 --- a/benchmark/streams/writable-manywrites.js +++ b/benchmark/streams/writable-manywrites.js @@ -5,19 +5,30 @@ const Writable = require('stream').Writable; const bench = common.createBenchmark(main, { n: [2e6], - sync: ['yes', 'no'] + sync: ['yes', 'no'], + writev: ['yes', 'no'] }); -function main({ n, sync }) { +function main({ n, sync, writev }) { const b = Buffer.allocUnsafe(1024); const s = new Writable(); sync = sync === 'yes'; - s._write = function(chunk, encoding, cb) { - if (sync) - cb(); - else - process.nextTick(cb); - }; + + if (writev === 'yes') { + s._writev = function(chunks, cb) { + if (sync) + cb(); + else + process.nextTick(cb); + }; + } else { + s._write = function(chunk, encoding, cb) { + if (sync) + cb(); + else + process.nextTick(cb); + }; + } bench.start(); From 415571287e9ac7659e611cb98916c7b03a04b0c8 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Mon, 23 Dec 2019 19:11:03 +0100 Subject: [PATCH 2/5] fixup: test w/ callback --- benchmark/streams/writable-manywrites.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/benchmark/streams/writable-manywrites.js b/benchmark/streams/writable-manywrites.js index 304b65cd39aa87..78f7aa736f033a 100644 --- a/benchmark/streams/writable-manywrites.js +++ b/benchmark/streams/writable-manywrites.js @@ -6,10 +6,13 @@ const Writable = require('stream').Writable; const bench = common.createBenchmark(main, { n: [2e6], sync: ['yes', 'no'], - writev: ['yes', 'no'] + writev: ['yes', 'no'], + callback: ['yes', 'no'] }); -function main({ n, sync, writev }) { +function nop() {} + +function main({ n, sync, writev, callback }) { const b = Buffer.allocUnsafe(1024); const s = new Writable(); sync = sync === 'yes'; @@ -30,11 +33,13 @@ function main({ n, sync, writev }) { }; } + const cb = callback === 'yes' ? nop : null; + bench.start(); let k = 0; function run() { - while (k++ < n && s.write(b)); + while (k++ < n && s.write(b, cb)); if (k >= n) bench.end(n); } From 704ac6a0fc20fa7a1e8de1ed62ebe38be063a865 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Mon, 23 Dec 2019 20:16:48 +0100 Subject: [PATCH 3/5] fixup: nit --- benchmark/streams/writable-manywrites.js | 25 ++++++++++-------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/benchmark/streams/writable-manywrites.js b/benchmark/streams/writable-manywrites.js index 78f7aa736f033a..65167c36d3e678 100644 --- a/benchmark/streams/writable-manywrites.js +++ b/benchmark/streams/writable-manywrites.js @@ -10,30 +10,25 @@ const bench = common.createBenchmark(main, { callback: ['yes', 'no'] }); -function nop() {} - function main({ n, sync, writev, callback }) { const b = Buffer.allocUnsafe(1024); const s = new Writable(); sync = sync === 'yes'; + const writecb = (cb) => { + if (sync) + cb(); + else + process.nextTick(cb); + } + if (writev === 'yes') { - s._writev = function(chunks, cb) { - if (sync) - cb(); - else - process.nextTick(cb); - }; + s._writev = (chunks, cb) => writecb(cb); } else { - s._write = function(chunk, encoding, cb) { - if (sync) - cb(); - else - process.nextTick(cb); - }; + s._write = (chunk, encoding, cb) => writecb(cb); } - const cb = callback === 'yes' ? nop : null; + const cb = callback === 'yes' ? () => {} : null; bench.start(); From a7770b74c59b68cc6bcb9739698cf77ce97007c7 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Mon, 23 Dec 2019 23:14:25 +0100 Subject: [PATCH 4/5] fixup: lint --- benchmark/streams/writable-manywrites.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/streams/writable-manywrites.js b/benchmark/streams/writable-manywrites.js index 65167c36d3e678..049bf8eb281db2 100644 --- a/benchmark/streams/writable-manywrites.js +++ b/benchmark/streams/writable-manywrites.js @@ -20,7 +20,7 @@ function main({ n, sync, writev, callback }) { cb(); else process.nextTick(cb); - } + }; if (writev === 'yes') { s._writev = (chunks, cb) => writecb(cb); From 7f60522e1a023048eeca91beefdb365eb05b4d4f Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Wed, 25 Dec 2019 11:27:41 +0100 Subject: [PATCH 5/5] fixup --- test/benchmark/test-benchmark-streams.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/benchmark/test-benchmark-streams.js b/test/benchmark/test-benchmark-streams.js index 51cdace5748fa4..fa61b8dc4e0ae7 100644 --- a/test/benchmark/test-benchmark-streams.js +++ b/test/benchmark/test-benchmark-streams.js @@ -9,6 +9,8 @@ runBenchmark('streams', 'kind=duplex', 'n=1', 'sync=no', + 'writev=no', + 'callback=no', 'type=buffer', ], { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 });