| 'use strict'; |
| |
| const common = require('../common.js'); |
| const { deepEqual, deepStrictEqual, notDeepEqual, notDeepStrictEqual } = |
| require('assert'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [5e2], |
| len: [1e4], |
| strict: [1], |
| method: [ |
| 'deepEqual_Array', |
| 'notDeepEqual_Array', |
| 'deepEqual_Set', |
| 'notDeepEqual_Set', |
| ], |
| }); |
| |
| function run(fn, n, actual, expected) { |
| bench.start(); |
| for (let i = 0; i < n; ++i) { |
| fn(actual, expected); |
| } |
| bench.end(n); |
| } |
| |
| function main({ n, len, method, strict }) { |
| const actual = []; |
| const expected = []; |
| |
| for (let i = 0; i < len; i++) { |
| actual.push(i); |
| expected.push(i); |
| } |
| if (method.includes('not')) { |
| expected[len - 1] += 1; |
| } |
| |
| switch (method) { |
| case 'deepEqual_Array': |
| run(strict ? deepStrictEqual : deepEqual, n, actual, expected); |
| break; |
| case 'notDeepEqual_Array': |
| run(strict ? notDeepStrictEqual : notDeepEqual, n, actual, expected); |
| break; |
| case 'deepEqual_Set': |
| run(strict ? deepStrictEqual : deepEqual, |
| n, new Set(actual), new Set(expected)); |
| break; |
| case 'notDeepEqual_Set': |
| run(strict ? notDeepStrictEqual : notDeepEqual, |
| n, new Set(actual), new Set(expected)); |
| break; |
| default: |
| throw new Error(`Unsupported method "${method}"`); |
| } |
| } |