summaryrefslogtreecommitdiff
path: root/benchmark/assert
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-01-23 13:17:21 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-02-01 10:48:58 +0100
commitcd7b2c434c8e0936e8305d7aa3baab874ad1f0dc (patch)
treeaad116959965cb855ceeedb8980a6ae164119581 /benchmark/assert
parentf951c9a9f02e1193e2843497e3cfed1b263c9721 (diff)
downloadandroid-node-v8-cd7b2c434c8e0936e8305d7aa3baab874ad1f0dc.tar.gz
android-node-v8-cd7b2c434c8e0936e8305d7aa3baab874ad1f0dc.tar.bz2
android-node-v8-cd7b2c434c8e0936e8305d7aa3baab874ad1f0dc.zip
benchmark: (assert) refactor
PR-URL: https://github.com/nodejs/node/pull/18320 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark/assert')
-rw-r--r--benchmark/assert/deepequal-buffer.js45
-rw-r--r--benchmark/assert/deepequal-map.js2
-rw-r--r--benchmark/assert/deepequal-object.js44
-rw-r--r--benchmark/assert/deepequal-prims-and-objs-big-array-set.js69
-rw-r--r--benchmark/assert/deepequal-prims-and-objs-big-loop.js45
-rw-r--r--benchmark/assert/deepequal-set.js2
-rw-r--r--benchmark/assert/deepequal-typedarrays.js44
7 files changed, 56 insertions, 195 deletions
diff --git a/benchmark/assert/deepequal-buffer.js b/benchmark/assert/deepequal-buffer.js
index 0e7494544d..9556a81ec3 100644
--- a/benchmark/assert/deepequal-buffer.js
+++ b/benchmark/assert/deepequal-buffer.js
@@ -14,8 +14,6 @@ const bench = common.createBenchmark(main, {
});
function main({ len, n, method }) {
- var i;
-
const data = Buffer.allocUnsafe(len + 1);
const actual = Buffer.alloc(len);
const expected = Buffer.alloc(len);
@@ -24,40 +22,13 @@ function main({ len, n, method }) {
data.copy(expected);
data.copy(expectedWrong);
- switch (method) {
- case '':
- // Empty string falls through to next line as default, mostly for tests.
- case 'deepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'deepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'notDeepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- case 'notDeepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- default:
- throw new Error('Unsupported method');
+ // eslint-disable-next-line no-restricted-properties
+ const fn = method !== '' ? assert[method] : assert.deepEqual;
+ const value2 = method.includes('not') ? expectedWrong : expected;
+
+ bench.start();
+ for (var i = 0; i < n; ++i) {
+ fn(actual, value2);
}
+ bench.end(n);
}
diff --git a/benchmark/assert/deepequal-map.js b/benchmark/assert/deepequal-map.js
index 085274e8bf..bdd3c5c6b8 100644
--- a/benchmark/assert/deepequal-map.js
+++ b/benchmark/assert/deepequal-map.js
@@ -117,6 +117,6 @@ function main({ n, len, method }) {
benchmark(assert.notDeepEqual, n, values, values2);
break;
default:
- throw new Error('Unsupported method');
+ throw new Error(`Unsupported method ${method}`);
}
}
diff --git a/benchmark/assert/deepequal-object.js b/benchmark/assert/deepequal-object.js
index 2c2549d584..4c95006b3b 100644
--- a/benchmark/assert/deepequal-object.js
+++ b/benchmark/assert/deepequal-object.js
@@ -28,47 +28,19 @@ function createObj(source, add = '') {
function main({ size, n, method }) {
// TODO: Fix this "hack". `n` should not be manipulated.
n = n / size;
- var i;
const source = Array.apply(null, Array(size));
const actual = createObj(source);
const expected = createObj(source);
const expectedWrong = createObj(source, '4');
- switch (method) {
- case '':
- // Empty string falls through to next line as default, mostly for tests.
- case 'deepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'deepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'notDeepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- case 'notDeepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- default:
- throw new Error('Unsupported method');
+ // eslint-disable-next-line no-restricted-properties
+ const fn = method !== '' ? assert[method] : assert.deepEqual;
+ const value2 = method.includes('not') ? expectedWrong : expected;
+
+ bench.start();
+ for (var i = 0; i < n; ++i) {
+ fn(actual, value2);
}
+ bench.end(n);
}
diff --git a/benchmark/assert/deepequal-prims-and-objs-big-array-set.js b/benchmark/assert/deepequal-prims-and-objs-big-array-set.js
index 04802a7692..90dbf10593 100644
--- a/benchmark/assert/deepequal-prims-and-objs-big-array-set.js
+++ b/benchmark/assert/deepequal-prims-and-objs-big-array-set.js
@@ -30,12 +30,19 @@ const bench = common.createBenchmark(main, {
]
});
+function run(fn, n, actual, expected) {
+ bench.start();
+ for (var i = 0; i < n; ++i) {
+ fn(actual, expected);
+ }
+ bench.end(n);
+}
+
function main({ n, len, primitive, method }) {
const prim = primValues[primitive];
const actual = [];
const expected = [];
const expectedWrong = [];
- var i;
for (var x = 0; x < len; x++) {
actual.push(prim);
@@ -51,69 +58,37 @@ function main({ n, len, primitive, method }) {
const expectedWrongSet = new Set(expectedWrong);
switch (method) {
+ // Empty string falls through to next line as default, mostly for tests.
case '':
- // Empty string falls through to next line as default, mostly for tests.
case 'deepEqual_Array':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual(actual, expected);
- }
- bench.end(n);
+ // eslint-disable-next-line no-restricted-properties
+ run(assert.deepEqual, n, actual, expected);
break;
case 'deepStrictEqual_Array':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual(actual, expected);
- }
- bench.end(n);
+ run(assert.deepStrictEqual, n, actual, expected);
break;
case 'notDeepEqual_Array':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual(actual, expectedWrong);
- }
- bench.end(n);
+ // eslint-disable-next-line no-restricted-properties
+ run(assert.notDeepEqual, n, actual, expectedWrong);
break;
case 'notDeepStrictEqual_Array':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual(actual, expectedWrong);
- }
- bench.end(n);
+ run(assert.notDeepStrictEqual, n, actual, expectedWrong);
break;
case 'deepEqual_Set':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual(actualSet, expectedSet);
- }
- bench.end(n);
+ // eslint-disable-next-line no-restricted-properties
+ run(assert.deepEqual, n, actualSet, expectedSet);
break;
case 'deepStrictEqual_Set':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual(actualSet, expectedSet);
- }
- bench.end(n);
+ run(assert.deepStrictEqual, n, actualSet, expectedSet);
break;
case 'notDeepEqual_Set':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual(actualSet, expectedWrongSet);
- }
- bench.end(n);
+ // eslint-disable-next-line no-restricted-properties
+ run(assert.notDeepEqual, n, actualSet, expectedWrongSet);
break;
case 'notDeepStrictEqual_Set':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual(actualSet, expectedWrongSet);
- }
- bench.end(n);
+ run(assert.notDeepStrictEqual, n, actualSet, expectedWrongSet);
break;
default:
- throw new Error('Unsupported method');
+ throw new Error(`Unsupported method "${method}"`);
}
}
diff --git a/benchmark/assert/deepequal-prims-and-objs-big-loop.js b/benchmark/assert/deepequal-prims-and-objs-big-loop.js
index 09797dfaf2..ec51201d51 100644
--- a/benchmark/assert/deepequal-prims-and-objs-big-loop.js
+++ b/benchmark/assert/deepequal-prims-and-objs-big-loop.js
@@ -29,43 +29,14 @@ function main({ n, primitive, method }) {
const actual = prim;
const expected = prim;
const expectedWrong = 'b';
- var i;
- // Creates new array to avoid loop invariant code motion
- switch (method) {
- case '':
- // Empty string falls through to next line as default, mostly for tests.
- case 'deepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual([actual], [expected]);
- }
- bench.end(n);
- break;
- case 'deepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual([actual], [expected]);
- }
- bench.end(n);
- break;
- case 'notDeepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual([actual], [expectedWrong]);
- }
- bench.end(n);
- break;
- case 'notDeepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual([actual], [expectedWrong]);
- }
- bench.end(n);
- break;
- default:
- throw new Error('Unsupported method');
+ // eslint-disable-next-line no-restricted-properties
+ const fn = method !== '' ? assert[method] : assert.deepEqual;
+ const value2 = method.includes('not') ? expectedWrong : expected;
+
+ bench.start();
+ for (var i = 0; i < n; ++i) {
+ fn([actual], [value2]);
}
+ bench.end(n);
}
diff --git a/benchmark/assert/deepequal-set.js b/benchmark/assert/deepequal-set.js
index ebcf33cc6d..e70ddf10e9 100644
--- a/benchmark/assert/deepequal-set.js
+++ b/benchmark/assert/deepequal-set.js
@@ -126,6 +126,6 @@ function main({ n, len, method }) {
benchmark(assert.notDeepEqual, n, values, values2);
break;
default:
- throw new Error('Unsupported method');
+ throw new Error(`Unsupported method "${method}"`);
}
}
diff --git a/benchmark/assert/deepequal-typedarrays.js b/benchmark/assert/deepequal-typedarrays.js
index 01546801ff..50e6e525b2 100644
--- a/benchmark/assert/deepequal-typedarrays.js
+++ b/benchmark/assert/deepequal-typedarrays.js
@@ -31,42 +31,14 @@ function main({ type, n, len, method }) {
const expectedWrong = Buffer.alloc(len);
const wrongIndex = Math.floor(len / 2);
expectedWrong[wrongIndex] = 123;
- var i;
- switch (method) {
- case '':
- // Empty string falls through to next line as default, mostly for tests.
- case 'deepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.deepEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'deepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.deepStrictEqual(actual, expected);
- }
- bench.end(n);
- break;
- case 'notDeepEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- // eslint-disable-next-line no-restricted-properties
- assert.notDeepEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- case 'notDeepStrictEqual':
- bench.start();
- for (i = 0; i < n; ++i) {
- assert.notDeepStrictEqual(actual, expectedWrong);
- }
- bench.end(n);
- break;
- default:
- throw new Error('Unsupported method');
+ // eslint-disable-next-line no-restricted-properties
+ const fn = method !== '' ? assert[method] : assert.deepEqual;
+ const value2 = method.includes('not') ? expectedWrong : expected;
+
+ bench.start();
+ for (var i = 0; i < n; ++i) {
+ fn(actual, value2);
}
+ bench.end(n);
}