Skip to content

Commit

Permalink
benchmark: fix configuation parameters
Browse files Browse the repository at this point in the history
The benchmark runner spawns new processes for each configuration. The
specific configuration is transfered by process.argv. This means that
the values have to be parsed. As of right now only numbers and strings
are parsed correctly. However other values such as objects where used.

This fixes the benchmarks that used non-string/number values and
prevents future issues by asserting the type.

PR-URL: #5177
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
  • Loading branch information
AndreasMadsen authored and Myles Borins committed Jun 2, 2016
1 parent 38e9f65 commit fe6f363
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 26 deletions.
25 changes: 14 additions & 11 deletions benchmark/assert/deepequal-prims-and-objs-big-array.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
'use strict';
var common = require('../common.js');
var assert = require('assert');

const primValues = {
'null': null,
'undefined': undefined,
'string': 'a',
'number': 1,
'boolean': true,
'object': { 0: 'a' },
'array': [1, 2, 3],
'new-array': new Array([1, 2, 3])
};

var bench = common.createBenchmark(main, {
prim: [
null,
undefined,
'a',
1,
true,
{0: 'a'},
[1, 2, 3],
new Array([1, 2, 3])
],
prim: Object.keys(primValues),
n: [25]
});

function main(conf) {
var prim = conf.prim;
var prim = primValues[conf.prim];
var n = +conf.n;
var primArray;
var primArrayCompare;
Expand Down
25 changes: 14 additions & 11 deletions benchmark/assert/deepequal-prims-and-objs-big-loop.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
'use strict';
var common = require('../common.js');
var assert = require('assert');

const primValues = {
'null': null,
'undefined': undefined,
'string': 'a',
'number': 1,
'boolean': true,
'object': { 0: 'a' },
'array': [1, 2, 3],
'new-array': new Array([1, 2, 3])
};

var bench = common.createBenchmark(main, {
prim: [
null,
undefined,
'a',
1,
true,
{0: 'a'},
[1, 2, 3],
new Array([1, 2, 3])
],
prim: Object.keys(primValues),
n: [1e5]
});

function main(conf) {
var prim = conf.prim;
var prim = primValues[conf.prim];
var n = +conf.n;
var x;

Expand Down
2 changes: 1 addition & 1 deletion benchmark/buffers/buffer-read.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
var common = require('../common.js');

var bench = common.createBenchmark(main, {
noAssert: [false, true],
noAssert: ['false', 'true'],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
Expand Down
4 changes: 2 additions & 2 deletions benchmark/buffers/buffer-tostring.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
const common = require('../common.js');

const bench = common.createBenchmark(main, {
arg: [true, false],
arg: ['true', 'false'],
len: [0, 1, 64, 1024],
n: [1e7]
});

function main(conf) {
const arg = conf.arg;
const arg = conf.arg === 'true';
const len = conf.len | 0;
const n = conf.n | 0;
const buf = Buffer(len).fill(42);
Expand Down
2 changes: 1 addition & 1 deletion benchmark/buffers/buffer-write.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict';
var common = require('../common.js');
var bench = common.createBenchmark(main, {
noAssert: [false, true],
noAssert: ['false', 'true'],
buffer: ['fast', 'slow'],
type: ['UInt8', 'UInt16LE', 'UInt16BE',
'UInt32LE', 'UInt32BE',
Expand Down
4 changes: 4 additions & 0 deletions benchmark/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ Benchmark.prototype._run = function() {
var j = 0;
set.forEach(function(s) {
vals.forEach(function(val) {
if (typeof val !== 'number' && typeof val !== 'string') {
throw new TypeError(`configuration "${key}" had type ${typeof val}`);
}

newSet[j++] = s.concat(key + '=' + val);
});
});
Expand Down

0 comments on commit fe6f363

Please sign in to comment.