From 90acb773becfd101915c861c2f947df894ae994b Mon Sep 17 00:00:00 2001 From: Nikolai Vavilov Date: Sun, 12 Mar 2017 23:31:37 +0200 Subject: [PATCH] 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 Reviewed-By: James M Snell Reviewed-By: Franziska Hinkelmann Reviewed-By: Brian White --- benchmark/common.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/benchmark/common.js b/benchmark/common.js index 7ce180fdb7ff0a..24369f2f543b67 100644 --- a/benchmark/common.js +++ b/benchmark/common.js @@ -38,7 +38,7 @@ function Benchmark(fn, configs, options) { } Benchmark.prototype._parseArgs = function(argv, configs) { - const cliOptions = Object.assign({}, configs); + const cliOptions = {}; const extraOptions = {}; // Parse configuration arguments for (const arg of argv) { @@ -47,17 +47,20 @@ Benchmark.prototype._parseArgs = function(argv, configs) { console.error('bad argument: ' + arg); process.exit(1); } + const config = match[1]; - if (configs[match[1]]) { + if (configs[config]) { // 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]; - cliOptions[match[1]] = [value]; + if (!cliOptions[config]) + cliOptions[config] = []; + cliOptions[config].push(value); } 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) {