Skip to content

Commit 9acf754

Browse files
BridgeARMylesBorins
authored andcommitted
benchmark: (assert) refactor
PR-URL: #18320 Reviewed-By: James M Snell <[email protected]>
1 parent 7da01f4 commit 9acf754

7 files changed

+56
-195
lines changed

benchmark/assert/deepequal-buffer.js

+8-37
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ const bench = common.createBenchmark(main, {
1414
});
1515

1616
function main({ len, n, method }) {
17-
var i;
18-
1917
const data = Buffer.allocUnsafe(len + 1);
2018
const actual = Buffer.alloc(len);
2119
const expected = Buffer.alloc(len);
@@ -24,40 +22,13 @@ function main({ len, n, method }) {
2422
data.copy(expected);
2523
data.copy(expectedWrong);
2624

27-
switch (method) {
28-
case '':
29-
// Empty string falls through to next line as default, mostly for tests.
30-
case 'deepEqual':
31-
bench.start();
32-
for (i = 0; i < n; ++i) {
33-
// eslint-disable-next-line no-restricted-properties
34-
assert.deepEqual(actual, expected);
35-
}
36-
bench.end(n);
37-
break;
38-
case 'deepStrictEqual':
39-
bench.start();
40-
for (i = 0; i < n; ++i) {
41-
assert.deepStrictEqual(actual, expected);
42-
}
43-
bench.end(n);
44-
break;
45-
case 'notDeepEqual':
46-
bench.start();
47-
for (i = 0; i < n; ++i) {
48-
// eslint-disable-next-line no-restricted-properties
49-
assert.notDeepEqual(actual, expectedWrong);
50-
}
51-
bench.end(n);
52-
break;
53-
case 'notDeepStrictEqual':
54-
bench.start();
55-
for (i = 0; i < n; ++i) {
56-
assert.notDeepStrictEqual(actual, expectedWrong);
57-
}
58-
bench.end(n);
59-
break;
60-
default:
61-
throw new Error('Unsupported method');
25+
// eslint-disable-next-line no-restricted-properties
26+
const fn = method !== '' ? assert[method] : assert.deepEqual;
27+
const value2 = method.includes('not') ? expectedWrong : expected;
28+
29+
bench.start();
30+
for (var i = 0; i < n; ++i) {
31+
fn(actual, value2);
6232
}
33+
bench.end(n);
6334
}

benchmark/assert/deepequal-map.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,6 @@ function main({ n, len, method }) {
117117
benchmark(assert.notDeepEqual, n, values, values2);
118118
break;
119119
default:
120-
throw new Error('Unsupported method');
120+
throw new Error(`Unsupported method ${method}`);
121121
}
122122
}

benchmark/assert/deepequal-object.js

+8-36
Original file line numberDiff line numberDiff line change
@@ -28,47 +28,19 @@ function createObj(source, add = '') {
2828
function main({ size, n, method }) {
2929
// TODO: Fix this "hack". `n` should not be manipulated.
3030
n = n / size;
31-
var i;
3231

3332
const source = Array.apply(null, Array(size));
3433
const actual = createObj(source);
3534
const expected = createObj(source);
3635
const expectedWrong = createObj(source, '4');
3736

38-
switch (method) {
39-
case '':
40-
// Empty string falls through to next line as default, mostly for tests.
41-
case 'deepEqual':
42-
bench.start();
43-
for (i = 0; i < n; ++i) {
44-
// eslint-disable-next-line no-restricted-properties
45-
assert.deepEqual(actual, expected);
46-
}
47-
bench.end(n);
48-
break;
49-
case 'deepStrictEqual':
50-
bench.start();
51-
for (i = 0; i < n; ++i) {
52-
assert.deepStrictEqual(actual, expected);
53-
}
54-
bench.end(n);
55-
break;
56-
case 'notDeepEqual':
57-
bench.start();
58-
for (i = 0; i < n; ++i) {
59-
// eslint-disable-next-line no-restricted-properties
60-
assert.notDeepEqual(actual, expectedWrong);
61-
}
62-
bench.end(n);
63-
break;
64-
case 'notDeepStrictEqual':
65-
bench.start();
66-
for (i = 0; i < n; ++i) {
67-
assert.notDeepStrictEqual(actual, expectedWrong);
68-
}
69-
bench.end(n);
70-
break;
71-
default:
72-
throw new Error('Unsupported method');
37+
// eslint-disable-next-line no-restricted-properties
38+
const fn = method !== '' ? assert[method] : assert.deepEqual;
39+
const value2 = method.includes('not') ? expectedWrong : expected;
40+
41+
bench.start();
42+
for (var i = 0; i < n; ++i) {
43+
fn(actual, value2);
7344
}
45+
bench.end(n);
7446
}

benchmark/assert/deepequal-prims-and-objs-big-array-set.js

+22-47
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,19 @@ const bench = common.createBenchmark(main, {
3030
]
3131
});
3232

33+
function run(fn, n, actual, expected) {
34+
bench.start();
35+
for (var i = 0; i < n; ++i) {
36+
fn(actual, expected);
37+
}
38+
bench.end(n);
39+
}
40+
3341
function main({ n, len, primitive, method }) {
3442
const prim = primValues[primitive];
3543
const actual = [];
3644
const expected = [];
3745
const expectedWrong = [];
38-
var i;
3946

4047
for (var x = 0; x < len; x++) {
4148
actual.push(prim);
@@ -51,69 +58,37 @@ function main({ n, len, primitive, method }) {
5158
const expectedWrongSet = new Set(expectedWrong);
5259

5360
switch (method) {
61+
// Empty string falls through to next line as default, mostly for tests.
5462
case '':
55-
// Empty string falls through to next line as default, mostly for tests.
5663
case 'deepEqual_Array':
57-
bench.start();
58-
for (i = 0; i < n; ++i) {
59-
// eslint-disable-next-line no-restricted-properties
60-
assert.deepEqual(actual, expected);
61-
}
62-
bench.end(n);
64+
// eslint-disable-next-line no-restricted-properties
65+
run(assert.deepEqual, n, actual, expected);
6366
break;
6467
case 'deepStrictEqual_Array':
65-
bench.start();
66-
for (i = 0; i < n; ++i) {
67-
assert.deepStrictEqual(actual, expected);
68-
}
69-
bench.end(n);
68+
run(assert.deepStrictEqual, n, actual, expected);
7069
break;
7170
case 'notDeepEqual_Array':
72-
bench.start();
73-
for (i = 0; i < n; ++i) {
74-
// eslint-disable-next-line no-restricted-properties
75-
assert.notDeepEqual(actual, expectedWrong);
76-
}
77-
bench.end(n);
71+
// eslint-disable-next-line no-restricted-properties
72+
run(assert.notDeepEqual, n, actual, expectedWrong);
7873
break;
7974
case 'notDeepStrictEqual_Array':
80-
bench.start();
81-
for (i = 0; i < n; ++i) {
82-
assert.notDeepStrictEqual(actual, expectedWrong);
83-
}
84-
bench.end(n);
75+
run(assert.notDeepStrictEqual, n, actual, expectedWrong);
8576
break;
8677
case 'deepEqual_Set':
87-
bench.start();
88-
for (i = 0; i < n; ++i) {
89-
// eslint-disable-next-line no-restricted-properties
90-
assert.deepEqual(actualSet, expectedSet);
91-
}
92-
bench.end(n);
78+
// eslint-disable-next-line no-restricted-properties
79+
run(assert.deepEqual, n, actualSet, expectedSet);
9380
break;
9481
case 'deepStrictEqual_Set':
95-
bench.start();
96-
for (i = 0; i < n; ++i) {
97-
assert.deepStrictEqual(actualSet, expectedSet);
98-
}
99-
bench.end(n);
82+
run(assert.deepStrictEqual, n, actualSet, expectedSet);
10083
break;
10184
case 'notDeepEqual_Set':
102-
bench.start();
103-
for (i = 0; i < n; ++i) {
104-
// eslint-disable-next-line no-restricted-properties
105-
assert.notDeepEqual(actualSet, expectedWrongSet);
106-
}
107-
bench.end(n);
85+
// eslint-disable-next-line no-restricted-properties
86+
run(assert.notDeepEqual, n, actualSet, expectedWrongSet);
10887
break;
10988
case 'notDeepStrictEqual_Set':
110-
bench.start();
111-
for (i = 0; i < n; ++i) {
112-
assert.notDeepStrictEqual(actualSet, expectedWrongSet);
113-
}
114-
bench.end(n);
89+
run(assert.notDeepStrictEqual, n, actualSet, expectedWrongSet);
11590
break;
11691
default:
117-
throw new Error('Unsupported method');
92+
throw new Error(`Unsupported method "${method}"`);
11893
}
11994
}

benchmark/assert/deepequal-prims-and-objs-big-loop.js

+8-37
Original file line numberDiff line numberDiff line change
@@ -29,43 +29,14 @@ function main({ n, primitive, method }) {
2929
const actual = prim;
3030
const expected = prim;
3131
const expectedWrong = 'b';
32-
var i;
3332

34-
// Creates new array to avoid loop invariant code motion
35-
switch (method) {
36-
case '':
37-
// Empty string falls through to next line as default, mostly for tests.
38-
case 'deepEqual':
39-
bench.start();
40-
for (i = 0; i < n; ++i) {
41-
// eslint-disable-next-line no-restricted-properties
42-
assert.deepEqual([actual], [expected]);
43-
}
44-
bench.end(n);
45-
break;
46-
case 'deepStrictEqual':
47-
bench.start();
48-
for (i = 0; i < n; ++i) {
49-
assert.deepStrictEqual([actual], [expected]);
50-
}
51-
bench.end(n);
52-
break;
53-
case 'notDeepEqual':
54-
bench.start();
55-
for (i = 0; i < n; ++i) {
56-
// eslint-disable-next-line no-restricted-properties
57-
assert.notDeepEqual([actual], [expectedWrong]);
58-
}
59-
bench.end(n);
60-
break;
61-
case 'notDeepStrictEqual':
62-
bench.start();
63-
for (i = 0; i < n; ++i) {
64-
assert.notDeepStrictEqual([actual], [expectedWrong]);
65-
}
66-
bench.end(n);
67-
break;
68-
default:
69-
throw new Error('Unsupported method');
33+
// eslint-disable-next-line no-restricted-properties
34+
const fn = method !== '' ? assert[method] : assert.deepEqual;
35+
const value2 = method.includes('not') ? expectedWrong : expected;
36+
37+
bench.start();
38+
for (var i = 0; i < n; ++i) {
39+
fn([actual], [value2]);
7040
}
41+
bench.end(n);
7142
}

benchmark/assert/deepequal-set.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,6 @@ function main({ n, len, method }) {
126126
benchmark(assert.notDeepEqual, n, values, values2);
127127
break;
128128
default:
129-
throw new Error('Unsupported method');
129+
throw new Error(`Unsupported method "${method}"`);
130130
}
131131
}

benchmark/assert/deepequal-typedarrays.js

+8-36
Original file line numberDiff line numberDiff line change
@@ -31,42 +31,14 @@ function main({ type, n, len, method }) {
3131
const expectedWrong = Buffer.alloc(len);
3232
const wrongIndex = Math.floor(len / 2);
3333
expectedWrong[wrongIndex] = 123;
34-
var i;
3534

36-
switch (method) {
37-
case '':
38-
// Empty string falls through to next line as default, mostly for tests.
39-
case 'deepEqual':
40-
bench.start();
41-
for (i = 0; i < n; ++i) {
42-
// eslint-disable-next-line no-restricted-properties
43-
assert.deepEqual(actual, expected);
44-
}
45-
bench.end(n);
46-
break;
47-
case 'deepStrictEqual':
48-
bench.start();
49-
for (i = 0; i < n; ++i) {
50-
assert.deepStrictEqual(actual, expected);
51-
}
52-
bench.end(n);
53-
break;
54-
case 'notDeepEqual':
55-
bench.start();
56-
for (i = 0; i < n; ++i) {
57-
// eslint-disable-next-line no-restricted-properties
58-
assert.notDeepEqual(actual, expectedWrong);
59-
}
60-
bench.end(n);
61-
break;
62-
case 'notDeepStrictEqual':
63-
bench.start();
64-
for (i = 0; i < n; ++i) {
65-
assert.notDeepStrictEqual(actual, expectedWrong);
66-
}
67-
bench.end(n);
68-
break;
69-
default:
70-
throw new Error('Unsupported method');
35+
// eslint-disable-next-line no-restricted-properties
36+
const fn = method !== '' ? assert[method] : assert.deepEqual;
37+
const value2 = method.includes('not') ? expectedWrong : expected;
38+
39+
bench.start();
40+
for (var i = 0; i < n; ++i) {
41+
fn(actual, value2);
7142
}
43+
bench.end(n);
7244
}

0 commit comments

Comments
 (0)