mirror of https://github.com/lukechilds/node.git
Browse Source
also some cleanup PR-URL: https://github.com/nodejs/node/pull/13457 Refs: https://github.com/nodejs/node/issues/12817 Reviewed-By: Tobias Nießen <tniessen@tnie.de>v6
Refael Ackermann
8 years ago
1 changed files with 20 additions and 19 deletions
@ -1,41 +1,42 @@ |
|||
'use strict'; |
|||
const common = require('../common.js'); |
|||
const { exec, execSync } = require('child_process'); |
|||
const isWindows = process.platform === 'win32'; |
|||
|
|||
var messagesLength = [64, 256, 1024, 4096]; |
|||
// Windows does not support that long arguments
|
|||
if (process.platform !== 'win32') |
|||
messagesLength.push(32768); |
|||
const bench = common.createBenchmark(main, { |
|||
// Windows does not support command lines longer than 8191 characters
|
|||
if (!isWindows) messagesLength.push(32768); |
|||
|
|||
const bench = common.createBenchmark(childProcessExecStdout, { |
|||
len: messagesLength, |
|||
dur: [5] |
|||
}); |
|||
|
|||
const child_process = require('child_process'); |
|||
const exec = child_process.exec; |
|||
function main(conf) { |
|||
function childProcessExecStdout(conf) { |
|||
bench.start(); |
|||
|
|||
const dur = +conf.dur; |
|||
const maxDuration = conf.dur * 1000; |
|||
const len = +conf.len; |
|||
|
|||
const msg = `"${'.'.repeat(len)}"`; |
|||
// eslint-disable-next-line no-unescaped-regexp-dot
|
|||
msg.match(/./); |
|||
const options = {'stdio': ['ignore', 'pipe', 'ignore']}; |
|||
const child = exec(`yes ${msg}`, options); |
|||
const cmd = `yes "${'.'.repeat(len)}"`; |
|||
const child = exec(cmd, { 'stdio': ['ignore', 'pipe', 'ignore'] }); |
|||
|
|||
var bytes = 0; |
|||
child.stdout.on('data', function(msg) { |
|||
child.stdout.on('data', (msg) => { |
|||
bytes += msg.length; |
|||
}); |
|||
|
|||
setTimeout(function() { |
|||
setTimeout(() => { |
|||
bench.end(bytes); |
|||
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}`); |
|||
if (isWindows) { |
|||
// Sometimes there's a yes.exe process left hanging around on Windows.
|
|||
try { |
|||
execSync(`taskkill /f /t /pid ${child.pid}`); |
|||
} catch (_) { |
|||
// this is a best effort kill. stderr is piped to parent for tracing.
|
|||
} |
|||
} else { |
|||
child.kill(); |
|||
} |
|||
}, dur * 1000); |
|||
}, maxDuration); |
|||
} |
|||
|
Loading…
Reference in new issue