Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Underscore vs Lodash vs Custom Vanilla JS: isEqual v2
Compare Underscore vs Lodash isEqual. Which is faster?
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0
Browser:
Firefox 123
Operating system:
Linux
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Underscore equal
1276337.1 Ops/sec
Lodash equal
433497.8 Ops/sec
JSON Stringify comparison
840896.1 Ops/sec
Callback
1502108.6 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script> <script type="text/javascript"> window.lodash = _; _ = null; </script> <script src='https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js'></script> <script type="text/javascript"> window.underscore = _; _ = null; </script>
Script Preparation code:
var obj1 = { 0: { 1: { key: 'one' } } }; var obj1copy = { 0: { 1: { key: 'one' } } }; var obj2 = { 0: { 1: { key: 'two' } } }; function isEqual(a,b){ return JSON.stringify(a) === JSON.stringify(b) } function compareObjects(a, b) { if (a === b) return true; if (typeof a != 'object' || typeof b != 'object' || a == null || b == null) return false; let keysA = Object.keys(a), keysB = Object.keys(b); if (keysA.length != keysB.length) return false; for (let key of keysA) { if (!keysB.includes(key)) return false; if (typeof a[key] === 'function' || typeof b[key] === 'function') { if (a[key].toString() != b[key].toString()) return false; } else { if (!compareObjects(a[key], b[key])) return false; } } return true; }
Tests:
Underscore equal
underscore.isEqual(obj1, obj1copy);
Lodash equal
lodash.isEqual(obj1, obj1copy);
JSON Stringify comparison
JSON.stringify(obj1) === JSON.stringify(obj1copy)
Callback
compareObjects(obj1, obj1copy);