Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
isDeepEqual vs isEqual
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Browser:
Chrome 130
Operating system:
Windows
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
isEqualLevel 1
2061633.2 Ops/sec
deepEquals 1
5075647.5 Ops/sec
isEqualLevel 2
1182961.8 Ops/sec
deepEquals 2
4081410.5 Ops/sec
isEquallevel 3
920559.9 Ops/sec
deepEquals 3
3407464.0 Ops/sec
HTML Preparation code:
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script> <script> function deepEquals(object1, object2, compareKeys) { let objKeys1 = Object.keys(object1); let objKeys2 = Object.keys(object2); if (compareKeys) { objKeys1 = objKeys1.filter(key => compareKeys.includes(key)); objKeys2 = objKeys2.filter(key => compareKeys.includes(key)); } if (objKeys1.length !== objKeys2.length) { return false; } for (const key of objKeys1) { const value1 = object1[key]; const value2 = object2[key]; const isObjects = isObjectOrArray(value1) && isObjectOrArray(value2); if ((isObjects && !deepEquals(value1, value2)) || (!isObjects && value1 !== value2)) { return false; } } return true; } function isObjectOrArray(input) { return input != null && typeof input === 'object'; } </script>
Script Preparation code:
// 1 level deep window.foo1 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 2 } } }; window.bar1 = { a: 1, b: 3, c: { a: 1, b: 2, c: { a: 1, b: 2 } } }; // 2 levels deep window.foo2 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 2 } } }; window.bar2 = { a: 1, b: 2, c: { a: 1, b: 3, c: { a: 1, b: 2 } } }; // 3 levels deep window.foo3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 2 } } }; window.bar3 = { a: 1, b: 2, c: { a: 1, b: 2, c: { a: 1, b: 4 } } };
Tests:
isEqualLevel 1
_.isEqual(window.foo1, window.bar1)
deepEquals 1
deepEquals(window.foo1, window.bar1);
isEqualLevel 2
_.isEqual(window.foo2, window.bar2)
deepEquals 2
deepEquals(window.foo2, window.bar2);
isEquallevel 3
_.isEqual(window.foo3, window.bar3);
deepEquals 3
deepEquals(window.foo3, window.bar3);