index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. 'use strict';
  2. const assertDeepStrictEqual = require('assert').deepStrictEqual;
  3. const tests = require('../spec/tests');
  4. const Benchmark = require('benchmark');
  5. const suite = new Benchmark.Suite;
  6. const equalPackages = {
  7. 'fast-deep-equal': require('../index'),
  8. 'nano-equal': true,
  9. 'shallow-equal-fuzzy': true,
  10. 'underscore.isEqual': require('underscore').isEqual,
  11. 'lodash.isEqual': require('lodash').isEqual,
  12. 'deep-equal': true,
  13. 'deep-eql': true,
  14. 'assert.deepStrictEqual': (a, b) => {
  15. try { assertDeepStrictEqual(a, b); return true; }
  16. catch(e) { return false; }
  17. },
  18. 'ramda.equals': require('ramda').equals
  19. };
  20. for (const equalName in equalPackages) {
  21. let equalFunc = equalPackages[equalName];
  22. if (equalFunc === true) equalFunc = require(equalName);
  23. for (const testSuite of tests) {
  24. for (const test of testSuite.tests) {
  25. try {
  26. if (equalFunc(test.value1, test.value2) !== test.equal)
  27. console.error('different result', equalName, testSuite.description, test.description);
  28. } catch(e) {
  29. console.error(equalName, testSuite.description, test.description, e);
  30. }
  31. }
  32. }
  33. suite.add(equalName, function() {
  34. for (const testSuite of tests) {
  35. for (const test of testSuite.tests) {
  36. if (test.description != 'pseudo array and equivalent array are not equal')
  37. equalFunc(test.value1, test.value2);
  38. }
  39. }
  40. });
  41. }
  42. console.log();
  43. suite
  44. .on('cycle', (event) => console.log(String(event.target)))
  45. .on('complete', function () {
  46. console.log('The fastest is ' + this.filter('fastest').map('name'));
  47. })
  48. .run({async: true});