Skip to content

Commit

Permalink
benchmark: allow multiple values for same config
Browse files Browse the repository at this point in the history
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: #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>
  • Loading branch information
seishun authored and MylesBorins committed Mar 28, 2017
1 parent 6a6c431 commit 90acb77
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions benchmark/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down

0 comments on commit 90acb77

Please sign in to comment.