mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 23:16:30 +01:00
d49580d812
PR-URL: https://github.com/nodejs/node/pull/18250 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
143 lines
3.5 KiB
JavaScript
143 lines
3.5 KiB
JavaScript
'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({ n, methodName, 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;
|
|
}
|
|
}
|