benchmark: allow multiple values for same config
This allows running a benchmark with two or more values for the same config rather than just one or all of them, for example: ``` node benchmark/buffers/buffer-creation.js type=buffer() type=fast-alloc type=fast-alloc-fill ``` PR-URL: https://github.com/nodejs/node/pull/11819 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Brian White <mscdex@mscdex.net>
This commit is contained in:
parent
e0a9ad1af2
commit
43fa0a8847
@ -38,7 +38,7 @@ function Benchmark(fn, configs, options) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Benchmark.prototype._parseArgs = function(argv, configs) {
|
Benchmark.prototype._parseArgs = function(argv, configs) {
|
||||||
const cliOptions = Object.assign({}, configs);
|
const cliOptions = {};
|
||||||
const extraOptions = {};
|
const extraOptions = {};
|
||||||
// Parse configuration arguments
|
// Parse configuration arguments
|
||||||
for (const arg of argv) {
|
for (const arg of argv) {
|
||||||
@ -47,17 +47,20 @@ Benchmark.prototype._parseArgs = function(argv, configs) {
|
|||||||
console.error('bad argument: ' + arg);
|
console.error('bad argument: ' + arg);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
const config = match[1];
|
||||||
|
|
||||||
if (configs[match[1]]) {
|
if (configs[config]) {
|
||||||
// Infer the type from the config object and parse accordingly
|
// Infer the type from the config object and parse accordingly
|
||||||
const isNumber = typeof configs[match[1]][0] === 'number';
|
const isNumber = typeof configs[config][0] === 'number';
|
||||||
const value = isNumber ? +match[2] : match[2];
|
const value = isNumber ? +match[2] : match[2];
|
||||||
cliOptions[match[1]] = [value];
|
if (!cliOptions[config])
|
||||||
|
cliOptions[config] = [];
|
||||||
|
cliOptions[config].push(value);
|
||||||
} else {
|
} else {
|
||||||
extraOptions[match[1]] = match[2];
|
extraOptions[config] = match[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { cli: cliOptions, extra: extraOptions };
|
return { cli: Object.assign({}, configs, cliOptions), extra: extraOptions };
|
||||||
};
|
};
|
||||||
|
|
||||||
Benchmark.prototype._queue = function(options) {
|
Benchmark.prototype._queue = function(options) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user