diff --git a/benchmark/child_process/child-process-read.js b/benchmark/child_process/child-process-read.js index 6fce35410eeb48..c1b834e4318fe1 100644 --- a/benchmark/child_process/child-process-read.js +++ b/benchmark/child_process/child-process-read.js @@ -1,6 +1,11 @@ 'use strict'; const common = require('../common.js'); + +// This benchmark uses `yes` to a create noisy child_processes with varying +// output message lengths, and tries to read 8GB of output + const os = require('os'); +const child_process = require('child_process'); var messagesLength = [64, 256, 1024, 4096]; // Windows does not support that long arguments @@ -12,7 +17,6 @@ const bench = common.createBenchmark(main, { dur: [5] }); -const spawn = require('child_process').spawn; function main(conf) { bench.start(); @@ -21,7 +25,7 @@ function main(conf) { const msg = `"${'.'.repeat(len)}"`; const options = { 'stdio': ['ignore', 'pipe', 'ignore'] }; - const child = spawn('yes', [msg], options); + const child = child_process.spawn('yes', [msg], options); var bytes = 0; child.stdout.on('data', function(msg) { @@ -29,7 +33,12 @@ function main(conf) { }); setTimeout(function() { - child.kill(); + if (process.platform === 'win32') { + // Sometimes there's a yes.exe process left hanging around on Windows... + child_process.execSync(`taskkill /f /t /pid ${child.pid}`); + } else { + child.kill(); + } const gbits = (bytes * 8) / (1024 * 1024 * 1024); bench.end(gbits); }, dur * 1000);