Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Object Array Equality (Map-JSON.stringify + sort vs Multiple Loops)) v3
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/121.0.0.0 Safari/537.36
Browser:
Chrome 121
Operating system:
Windows
Device Platform:
Desktop
Date tested:
2 years ago
Test name
Executions per second
Map-JSON.stringify + Sort
0.8 Ops/sec
Multiple Loops
1.8 Ops/sec
Script Preparation code:
const longstr = generateRandomString(10000) var objArr1 = [{},{ a: 1, b: 2, c: 3, d: 4, e: 5, },{a:undefined},{longstr}] var objArr2 = [{},{longstr},{ a: 1, b: 2, c: 3, d: 4, e: 5, },{a:undefined}] function mapStringifySort($objArr1, $objArr2) { if ($objArr1.length!==$objArr2.length) return false $objArr1 = $objArr1.map(obj=>JSON.stringify(obj)).sort() $objArr2 = $objArr2.map(obj=>JSON.stringify(obj)).sort() for (let i=0; i<$objArr1.length; i++){ if($objArr1[i]!==$objArr2[i]) return false } return true } function multipleLoops($objArr1, $objArr2) { if ($objArr1.length!==$objArr2.length) return false const has = Object.prototype.hasOwnProperty let bArray, sArray, foundSArrayIdxs = {} if($objArr2.length>$objArr2.length) { bArray = $objArr2 sArray = $objArr1 } else { bArray = $objArr1 sArray = $objArr2 } return bArray.every(($obj1)=>{ let $obj1Keys = Object.keys($obj1) let $obj1Len = $obj1Keys.length return sArray.some(($obj2, sidx)=>{ if(foundSArrayIdxs[sidx]) return false for(let i=0; i<$obj1Keys.length; i++) { let key = $obj1Keys[i] if($obj2[key]!==$obj1[key]) { return false } if(!has.call($obj2,key)) { return false } } let found = $obj1Len===objectLength($obj2) if(found) { foundSArrayIdxs[sidx] = true } return found }) }) } function objectLength(obj) { let i = 0; for(let k in obj){ i++ } return i } function generateRandomString(length) { let result = ''; let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; }
Tests:
Map-JSON.stringify + Sort
for(let i=0; i<10000; i++) { console.log(mapStringifySort(objArr1,objArr2)) }
Multiple Loops
for(let i=0; i<10000; i++) { console.log(multipleLoops(objArr1,objArr2)) }