Browse Source

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>
v7.x
Nikolai Vavilov 8 years ago
committed by Myles Borins
parent
commit
90acb773be
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 15
      benchmark/common.js

15
benchmark/common.js

@ -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…
Cancel
Save