mirror of https://github.com/lukechilds/node.git
Browse Source
Removed or fixed use of arguments in execFile(), normalizeExecArgs(), and normalizeSpawnArguments(). Refs: https://github.com/nodejs/node/issues/10323 Refs: https://bugs.chromium.org/p/v8/issues/detail?id=6010 PR-URL: https://github.com/nodejs/node/pull/11535 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>v6
Vse Mozhet Byt
8 years ago
committed by
cjihrig
2 changed files with 158 additions and 20 deletions
@ -0,0 +1,146 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const common = require('../common.js'); |
||||
|
const cp = require('child_process'); |
||||
|
|
||||
|
const command = 'echo'; |
||||
|
const args = ['hello']; |
||||
|
const options = {}; |
||||
|
const cb = () => {}; |
||||
|
|
||||
|
const configs = { |
||||
|
n: [1e3], |
||||
|
methodName: [ |
||||
|
'exec', 'execSync', |
||||
|
'execFile', 'execFileSync', |
||||
|
'spawn', 'spawnSync', |
||||
|
], |
||||
|
params: [1, 2, 3, 4], |
||||
|
}; |
||||
|
|
||||
|
const bench = common.createBenchmark(main, configs); |
||||
|
|
||||
|
function main(conf) { |
||||
|
const n = +conf.n; |
||||
|
const methodName = conf.methodName; |
||||
|
const params = +conf.params; |
||||
|
|
||||
|
const method = cp[methodName]; |
||||
|
|
||||
|
switch (methodName) { |
||||
|
case 'exec': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, options).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 3: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, options, cb).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
case 'execSync': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, options); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
case 'execFile': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 3: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args, options).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 4: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args, options, cb).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
case 'execFileSync': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 3: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args, options); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
case 'spawn': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 3: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args, options).kill(); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
case 'spawnSync': |
||||
|
switch (params) { |
||||
|
case 1: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 2: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
case 3: |
||||
|
bench.start(); |
||||
|
for (let i = 0; i < n; i++) method(command, args, options); |
||||
|
bench.end(n); |
||||
|
break; |
||||
|
} |
||||
|
break; |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue