'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'); const 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: messagesLength, dur: [5], }); function main({ dur, len }) { bench.start(); const msg = `"${'.'.repeat(len)}"`; const options = { 'stdio': ['ignore', 'pipe', 'ignore'] }; const child = child_process.spawn('yes', [msg], options); let bytes = 0; child.stdout.on('data', (msg) => { bytes += msg.length; }); setTimeout(() => { 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); }