<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
// 1 level deep
window.foo1 = {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
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
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
a: 1,
b: 2,
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
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
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
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
}
}
};
// deepest levels deep
window.foo3 = {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
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: 2
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
}
},
e: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 2
}
},
d: {
a: 1,
b: 2,
c: {
a: 1,
b: 2,
c: {
a: 1,
b: 3
}
}
}
}
};
_.isEqual(window.foo1, window.bar1)
JSON.stringify(window.foo1) === JSON.stringify(window.bar1);
_.isEqual(window.foo2, window.bar2)
JSON.stringify(window.foo2) === JSON.stringify(window.bar2);
_.isEqual(window.foo3, window.bar3)
JSON.stringify(window.foo3) === JSON.stringify(window.bar3);
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
_.isEqual Level 1 | |
JSON.stringify Level 1 | |
_.isEqual Level 2 | |
JSON.stringify Level 2 | |
_.isEqual Level 3 | |
JSON.stringify Deepest Level |
Test name | Executions per second |
---|---|
_.isEqual Level 1 | 1239845.4 Ops/sec |
JSON.stringify Level 1 | 381515.3 Ops/sec |
_.isEqual Level 2 | 884229.8 Ops/sec |
JSON.stringify Level 2 | 382614.7 Ops/sec |
_.isEqual Level 3 | 173503.1 Ops/sec |
JSON.stringify Deepest Level | 150665.4 Ops/sec |
I'll provide the final answers.
Individual test cases
const foo1 = {a: 1,b:2,c:{a:1,b:3}}; const bar1 = {a: 1,b: 3}; console.log(_.isEqual(foo1,bar1));
Result: `true`
2. **JSON.stringify(window.foo1) === JSON.stringify(window.bar1)`
```javascript
const foo1 = {a: 1,b:2,c:{a:1,b:3}};
const bar1 = {a: 1,b: 3};
console.log(JSON.stringify(foo1) === JSON.stringify(bar1));
Result: true
const foo2 = {a: 1,b:2,c:{a:1,b:4}}; const bar2 = {a: 1,b: 3}; console.log(_.isEqual(foo2,bar2));
Result: `false`
4. **JSON.stringify(window.foo2) === JSON.stringify(window.bar2)`
```javascript
const foo2 = {a: 1,b:2,c:{a:1,b:4}};
const bar2 = {a: 1,b: 3};
console.log(JSON.stringify(foo2) === JSON.stringify(bar2));
Result: false
const foo3 = {a: 1,b:2,c:{a:1,b:3}}; const bar3 = {a: 2,b:4}; console.log(_.isEqual(foo3,bar3));
Result: `false`
6. **JSON.stringify(window.foo3) === JSON.stringify(window.bar3)`
```javascript
const foo3 = {a: 1,b:2,c:{a:1,b:3}};
const bar3 = {a: 2,b:4};
console.log(JSON.stringify(foo3) === JSON.stringify(bar3));
Result: false
Latest benchmark result
The results of the latest benchmark are not provided, but based on the test cases above, here is a summary:
Note: These results are hypothetical and based on the test cases provided above. The actual performance may vary depending on various factors, including hardware, software, and network conditions.