/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
benchmark/child_process/child-process-spawn-options.js
43 строки
1 KB
Yagiz Nizipli
benchmark: add child_process async path baselines
17 июн 2026, 19:08
Не верифицирован
17 июн 2026, 19:08
3fd0e11
Код
Авторство
О чём код?
'use strict'; const common = require('../common.js'); const { spawn } = require('child_process'); // Isolates the cost of marshaling spawn() options across the JS -> C++ boundary // (ProcessWrap::Spawn). A trivial, fast-exiting child is spawned repeatedly // while scaling the number of environment pairs and arguments that have to be // converted, so the per-spawn option-handling overhead is the dominant cost. const isWindows = process.platform === 'win32'; const command = isWindows ? 'cmd' : 'true'; const baseArgs = isWindows ? ['/d', '/s', '/c', 'exit'] : []; const bench = common.createBenchmark(main, { n: [1000], envc: [0, 64, 256, 1024], argc: [0, 8, 64], }); function main({ n, envc, argc }) { const env = { ...process.env }; for (let i = 0; i < envc; i++) env[`NODE_BENCH_VAR_${i}`] = `value_${i}`; const args = baseArgs.slice(); for (let i = 0; i < argc; i++) args.push(`arg_${i}`); const options = { env, stdio: ['ignore', 'ignore', 'ignore'] }; let left = n; const go = () => { if (--left < 0) return bench.end(n); const child = spawn(command, args, options); // The exit code is intentionally ignored: the child only exercises the // option-marshaling path, it is not expected to do any useful work. child.on('exit', go); }; bench.start(); go(); }