Tests:
  • equality by gettingDifferences

    x
     
    const equalArrays = (arr1, arr2) => arr1.length === arr2.length &&
    arr1.every((element, index) => getDifferences(element, arr2[index]) === undefined)
    function getDifferences(original, modified) {
      if (original instanceof Array && modified instanceof Array) {
        return equalArrays(original, modified)
          ? undefined
          : modified
      }
      if (original instanceof Object && modified instanceof Object) {
        let result = {}
        for (const key of Object.keys(modified)) {
          const diff = getDifferences(original[key], modified[key])
          if (diff !== undefined) {
            result[key] = diff
          }
        }
        return !Object.keys(result).length
          ? undefined
          : result
      }
      return original === modified
        ? undefined
        : modified
    }
  • equality by self function

     
    const deepEqual = (thing1, thing2) => {
      if (thing1 instanceof Object && thing2 instanceof Object)
        return Object.keys(thing1).every(key => deepEqual(thing1[key], thing2[key]))
      return thing1 === thing2
    }
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    equality by gettingDifferences
    equality by self function

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 4 years ago)
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:82.0) Gecko/20100101 Firefox/82.0
Firefox 82 on Ubuntu
View result in a separate tab
Test name Executions per second
equality by gettingDifferences 7317176.5 Ops/sec
equality by self function 8108254.5 Ops/sec