diff --git a/benchmark/child_process/child-process-read-ipc.js b/benchmark/child_process/child-process-read-ipc.js new file mode 100644 index 00000000000000..82e833980fee75 --- /dev/null +++ b/benchmark/child_process/child-process-read-ipc.js @@ -0,0 +1,37 @@ +'use strict'; +if (process.argv[2] === 'child') +{ + const len = +process.argv[3]; + const msg = `"${'.'.repeat(len)}"`; + while (true) { + process.send(msg); + } +} else { + const common = require('../common.js'); + const bench = common.createBenchmark(main, { + len: [64, 256, 1024, 4096, 32768], + dur: [5] + }); + const spawn = require('child_process').spawn; + function main(conf) { + bench.start(); + + const dur = +conf.dur; + const len = +conf.len; + + const options = { 'stdio': ['ignore', 'ignore', 'ignore', 'ipc'] }; + const child = spawn(process.argv[0], + [process.argv[1], 'child', len], options); + + var bytes = 0; + child.on('message', function(msg) { + bytes += msg.length; + }); + + setTimeout(function() { + child.kill(); + const gbits = (bytes * 8) / (1024 * 1024 * 1024); + bench.end(gbits); + }, dur * 1000); + } +} diff --git a/benchmark/child_process/child-process-read.js b/benchmark/child_process/child-process-read.js index 33c268390fd5c3..b0128eb7969056 100644 --- a/benchmark/child_process/child-process-read.js +++ b/benchmark/child_process/child-process-read.js @@ -1,7 +1,14 @@ 'use strict'; const common = require('../common.js'); +const os = require('os'); + +var messagesLength = [64, 256, 1024, 4096]; +// Windows does not support that long arguments +if (os.platform() !== 'win32') + messagesLength.push(32768); + const bench = common.createBenchmark(main, { - len: [64, 256, 1024, 4096, 32768], + len: messagesLength, dur: [5] }); @@ -13,11 +20,11 @@ function main(conf) { const len = +conf.len; const msg = '"' + Array(len).join('.') + '"'; - const options = {'stdio': ['ignore', 'ipc', 'ignore']}; + const options = { 'stdio': ['ignore', 'pipe', 'ignore'] }; const child = spawn('yes', [msg], options); var bytes = 0; - child.on('message', function(msg) { + child.stdout.on('data', function(msg) { bytes += msg.length; });