benchmark: (assert) refactor
PR-URL: https://github.com/nodejs/node/pull/18320 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
f951c9a9f0
commit
cd7b2c434c
@ -14,8 +14,6 @@ const bench = common.createBenchmark(main, {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function main({ len, n, method }) {
|
function main({ len, n, method }) {
|
||||||
var i;
|
|
||||||
|
|
||||||
const data = Buffer.allocUnsafe(len + 1);
|
const data = Buffer.allocUnsafe(len + 1);
|
||||||
const actual = Buffer.alloc(len);
|
const actual = Buffer.alloc(len);
|
||||||
const expected = Buffer.alloc(len);
|
const expected = Buffer.alloc(len);
|
||||||
@ -24,40 +22,13 @@ function main({ len, n, method }) {
|
|||||||
data.copy(expected);
|
data.copy(expected);
|
||||||
data.copy(expectedWrong);
|
data.copy(expectedWrong);
|
||||||
|
|
||||||
switch (method) {
|
// eslint-disable-next-line no-restricted-properties
|
||||||
case '':
|
const fn = method !== '' ? assert[method] : assert.deepEqual;
|
||||||
// Empty string falls through to next line as default, mostly for tests.
|
const value2 = method.includes('not') ? expectedWrong : expected;
|
||||||
case 'deepEqual':
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (var i = 0; i < n; ++i) {
|
||||||
// eslint-disable-next-line no-restricted-properties
|
fn(actual, value2);
|
||||||
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');
|
|
||||||
}
|
}
|
||||||
|
bench.end(n);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,6 @@ function main({ n, len, method }) {
|
|||||||
benchmark(assert.notDeepEqual, n, values, values2);
|
benchmark(assert.notDeepEqual, n, values, values2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error('Unsupported method');
|
throw new Error(`Unsupported method ${method}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,47 +28,19 @@ function createObj(source, add = '') {
|
|||||||
function main({ size, n, method }) {
|
function main({ size, n, method }) {
|
||||||
// TODO: Fix this "hack". `n` should not be manipulated.
|
// TODO: Fix this "hack". `n` should not be manipulated.
|
||||||
n = n / size;
|
n = n / size;
|
||||||
var i;
|
|
||||||
|
|
||||||
const source = Array.apply(null, Array(size));
|
const source = Array.apply(null, Array(size));
|
||||||
const actual = createObj(source);
|
const actual = createObj(source);
|
||||||
const expected = createObj(source);
|
const expected = createObj(source);
|
||||||
const expectedWrong = createObj(source, '4');
|
const expectedWrong = createObj(source, '4');
|
||||||
|
|
||||||
switch (method) {
|
// eslint-disable-next-line no-restricted-properties
|
||||||
case '':
|
const fn = method !== '' ? assert[method] : assert.deepEqual;
|
||||||
// Empty string falls through to next line as default, mostly for tests.
|
const value2 = method.includes('not') ? expectedWrong : expected;
|
||||||
case 'deepEqual':
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (var i = 0; i < n; ++i) {
|
||||||
// eslint-disable-next-line no-restricted-properties
|
fn(actual, value2);
|
||||||
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');
|
|
||||||
}
|
}
|
||||||
|
bench.end(n);
|
||||||
}
|
}
|
||||||
|
@ -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 }) {
|
function main({ n, len, primitive, method }) {
|
||||||
const prim = primValues[primitive];
|
const prim = primValues[primitive];
|
||||||
const actual = [];
|
const actual = [];
|
||||||
const expected = [];
|
const expected = [];
|
||||||
const expectedWrong = [];
|
const expectedWrong = [];
|
||||||
var i;
|
|
||||||
|
|
||||||
for (var x = 0; x < len; x++) {
|
for (var x = 0; x < len; x++) {
|
||||||
actual.push(prim);
|
actual.push(prim);
|
||||||
@ -51,69 +58,37 @@ function main({ n, len, primitive, method }) {
|
|||||||
const expectedWrongSet = new Set(expectedWrong);
|
const expectedWrongSet = new Set(expectedWrong);
|
||||||
|
|
||||||
switch (method) {
|
switch (method) {
|
||||||
|
// Empty string falls through to next line as default, mostly for tests.
|
||||||
case '':
|
case '':
|
||||||
// Empty string falls through to next line as default, mostly for tests.
|
|
||||||
case 'deepEqual_Array':
|
case 'deepEqual_Array':
|
||||||
bench.start();
|
// eslint-disable-next-line no-restricted-properties
|
||||||
for (i = 0; i < n; ++i) {
|
run(assert.deepEqual, n, actual, expected);
|
||||||
// eslint-disable-next-line no-restricted-properties
|
|
||||||
assert.deepEqual(actual, expected);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'deepStrictEqual_Array':
|
case 'deepStrictEqual_Array':
|
||||||
bench.start();
|
run(assert.deepStrictEqual, n, actual, expected);
|
||||||
for (i = 0; i < n; ++i) {
|
|
||||||
assert.deepStrictEqual(actual, expected);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'notDeepEqual_Array':
|
case 'notDeepEqual_Array':
|
||||||
bench.start();
|
// eslint-disable-next-line no-restricted-properties
|
||||||
for (i = 0; i < n; ++i) {
|
run(assert.notDeepEqual, n, actual, expectedWrong);
|
||||||
// eslint-disable-next-line no-restricted-properties
|
|
||||||
assert.notDeepEqual(actual, expectedWrong);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'notDeepStrictEqual_Array':
|
case 'notDeepStrictEqual_Array':
|
||||||
bench.start();
|
run(assert.notDeepStrictEqual, n, actual, expectedWrong);
|
||||||
for (i = 0; i < n; ++i) {
|
|
||||||
assert.notDeepStrictEqual(actual, expectedWrong);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'deepEqual_Set':
|
case 'deepEqual_Set':
|
||||||
bench.start();
|
// eslint-disable-next-line no-restricted-properties
|
||||||
for (i = 0; i < n; ++i) {
|
run(assert.deepEqual, n, actualSet, expectedSet);
|
||||||
// eslint-disable-next-line no-restricted-properties
|
|
||||||
assert.deepEqual(actualSet, expectedSet);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'deepStrictEqual_Set':
|
case 'deepStrictEqual_Set':
|
||||||
bench.start();
|
run(assert.deepStrictEqual, n, actualSet, expectedSet);
|
||||||
for (i = 0; i < n; ++i) {
|
|
||||||
assert.deepStrictEqual(actualSet, expectedSet);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'notDeepEqual_Set':
|
case 'notDeepEqual_Set':
|
||||||
bench.start();
|
// eslint-disable-next-line no-restricted-properties
|
||||||
for (i = 0; i < n; ++i) {
|
run(assert.notDeepEqual, n, actualSet, expectedWrongSet);
|
||||||
// eslint-disable-next-line no-restricted-properties
|
|
||||||
assert.notDeepEqual(actualSet, expectedWrongSet);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
case 'notDeepStrictEqual_Set':
|
case 'notDeepStrictEqual_Set':
|
||||||
bench.start();
|
run(assert.notDeepStrictEqual, n, actualSet, expectedWrongSet);
|
||||||
for (i = 0; i < n; ++i) {
|
|
||||||
assert.notDeepStrictEqual(actualSet, expectedWrongSet);
|
|
||||||
}
|
|
||||||
bench.end(n);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error('Unsupported method');
|
throw new Error(`Unsupported method "${method}"`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,43 +29,14 @@ function main({ n, primitive, method }) {
|
|||||||
const actual = prim;
|
const actual = prim;
|
||||||
const expected = prim;
|
const expected = prim;
|
||||||
const expectedWrong = 'b';
|
const expectedWrong = 'b';
|
||||||
var i;
|
|
||||||
|
|
||||||
// Creates new array to avoid loop invariant code motion
|
// eslint-disable-next-line no-restricted-properties
|
||||||
switch (method) {
|
const fn = method !== '' ? assert[method] : assert.deepEqual;
|
||||||
case '':
|
const value2 = method.includes('not') ? expectedWrong : expected;
|
||||||
// Empty string falls through to next line as default, mostly for tests.
|
|
||||||
case 'deepEqual':
|
bench.start();
|
||||||
bench.start();
|
for (var i = 0; i < n; ++i) {
|
||||||
for (i = 0; i < n; ++i) {
|
fn([actual], [value2]);
|
||||||
// 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');
|
|
||||||
}
|
}
|
||||||
|
bench.end(n);
|
||||||
}
|
}
|
||||||
|
@ -126,6 +126,6 @@ function main({ n, len, method }) {
|
|||||||
benchmark(assert.notDeepEqual, n, values, values2);
|
benchmark(assert.notDeepEqual, n, values, values2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error('Unsupported method');
|
throw new Error(`Unsupported method "${method}"`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,42 +31,14 @@ function main({ type, n, len, method }) {
|
|||||||
const expectedWrong = Buffer.alloc(len);
|
const expectedWrong = Buffer.alloc(len);
|
||||||
const wrongIndex = Math.floor(len / 2);
|
const wrongIndex = Math.floor(len / 2);
|
||||||
expectedWrong[wrongIndex] = 123;
|
expectedWrong[wrongIndex] = 123;
|
||||||
var i;
|
|
||||||
|
|
||||||
switch (method) {
|
// eslint-disable-next-line no-restricted-properties
|
||||||
case '':
|
const fn = method !== '' ? assert[method] : assert.deepEqual;
|
||||||
// Empty string falls through to next line as default, mostly for tests.
|
const value2 = method.includes('not') ? expectedWrong : expected;
|
||||||
case 'deepEqual':
|
|
||||||
bench.start();
|
bench.start();
|
||||||
for (i = 0; i < n; ++i) {
|
for (var i = 0; i < n; ++i) {
|
||||||
// eslint-disable-next-line no-restricted-properties
|
fn(actual, value2);
|
||||||
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');
|
|
||||||
}
|
}
|
||||||
|
bench.end(n);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user