| 'use strict'; |
| |
| const assertDeepStrictEqual = require('assert').deepStrictEqual; |
| const tests = require('../spec/tests'); |
| const Benchmark = require('benchmark'); |
| const suite = new Benchmark.Suite; |
| |
| |
| const equalPackages = { |
| 'fast-deep-equal': require('../index'), |
| 'nano-equal': true, |
| 'shallow-equal-fuzzy': true, |
| 'underscore.isEqual': require('underscore').isEqual, |
| 'lodash.isEqual': require('lodash').isEqual, |
| 'deep-equal': true, |
| 'deep-eql': true, |
| 'assert.deepStrictEqual': (a, b) => { |
| try { assertDeepStrictEqual(a, b); return true; } |
| catch(e) { return false; } |
| } |
| }; |
| |
| |
| for (const equalName in equalPackages) { |
| let equalFunc = equalPackages[equalName]; |
| if (equalFunc === true) equalFunc = require(equalName); |
| |
| for (const testSuite of tests) { |
| for (const test of testSuite.tests) { |
| try { |
| if (equalFunc(test.value1, test.value2) !== test.equal) |
| console.error('different result', equalName, testSuite.description, test.description); |
| } catch(e) { |
| console.error(equalName, testSuite.description, test.description, e); |
| } |
| } |
| } |
| |
| suite.add(equalName, function() { |
| for (const testSuite of tests) { |
| for (const test of testSuite.tests) { |
| if (test.description != 'pseudo array and equivalent array are not equal') |
| equalFunc(test.value1, test.value2); |
| } |
| } |
| }); |
| } |
| |
| console.log(); |
| |
| suite |
| .on('cycle', (event) => console.log(String(event.target))) |
| .on('complete', function () { |
| console.log('The fastest is ' + this.filter('fastest').map('name')); |
| }) |
| .run({async: true}); |