diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2017-06-28 20:34:19 +0200 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2017-08-13 14:31:27 -0400 |
commit | a7189c0177938545050421a600fb12c21db3858f (patch) | |
tree | 73ee334b29807c0499cfb7be37ac83fe52ed8cf1 /benchmark/assert/deepequal-object.js | |
parent | 6fe72c82d283fead3694368218263ab6bca6572b (diff) | |
download | android-node-v8-a7189c0177938545050421a600fb12c21db3858f.tar.gz android-node-v8-a7189c0177938545050421a600fb12c21db3858f.tar.bz2 android-node-v8-a7189c0177938545050421a600fb12c21db3858f.zip |
benchmark: fix and extend assert benchmarks
The benchmarks had the strict and non strict labels switched.
This is fixed and the benchmarks were extended to check more
possible input types and function calls.
PR-URL: https://github.com/nodejs/node/pull/14147
Refs: https://github.com/nodejs/node/pull/13973
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark/assert/deepequal-object.js')
-rw-r--r-- | benchmark/assert/deepequal-object.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/benchmark/assert/deepequal-object.js b/benchmark/assert/deepequal-object.js new file mode 100644 index 0000000000..d1a6cb6994 --- /dev/null +++ b/benchmark/assert/deepequal-object.js @@ -0,0 +1,73 @@ +'use strict'; + +const common = require('../common.js'); +const assert = require('assert'); + +const bench = common.createBenchmark(main, { + n: [1e6], + size: [1e2, 1e3, 1e4], + method: [ + 'deepEqual', + 'deepStrictEqual', + 'notDeepEqual', + 'notDeepStrictEqual' + ] +}); + +function createObj(source, add = '') { + return source.map((n) => ({ + foo: 'yarp', + nope: { + bar: `123${add}`, + a: [1, 2, 3], + baz: n + } + })); +} + +function main(conf) { + const size = +conf.size; + // TODO: Fix this "hack" + const n = (+conf.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 (conf.method) { + 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'); + } +} |