Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Lodash 2.2.0 cloneDeep vs JSON Clone w/ large nested object
(version: 1)
Comparing performance of:
Lodash cloneDeep vs Json clone
Created:
6 years ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.2.0/lodash.min.js'></script>
Script Preparation code:
var MyObject = { description: 'Creates a deep copy of source, which should be an object or an array.', myNumber: 123456789, myBoolean: true, jayson: { stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....', parse: 'JSON.parse() method parses a JSON string...' }, a: [ { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, { a: { a: [ { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, { a: { a: 1 } }, ] } }, ] }; var myCopy = null;
Tests:
Lodash cloneDeep
myCopy = _.cloneDeep(MyObject);
Json clone
myCopy = JSON.parse(JSON.stringify(MyObject));
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
Lodash cloneDeep
Json clone
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
7 months ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Browser/OS:
Chrome 140 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
Lodash cloneDeep
2495.7 Ops/sec
Json clone
23412.7 Ops/sec
Autogenerated LLM Summary
(model
gemma2:9b
, generated one year ago):
The benchmark results show that `JSON.parse(JSON.stringify(MyObject))` is significantly faster than `_.cloneDeep(MyObject)` in this particular scenario. Here's a breakdown: * **JSON Clone:** Executes at 5523.876953125 operations per second. * **Lodash cloneDeep:** Executes at 745.5621337890625 operations per second. This means the JSON clone method is roughly **7 times faster** than Lodash's `cloneDeep` in this case. **Important Considerations:** * **Specific Data Structure:** The performance difference heavily depends on the complexity and structure of your `MyObject`. * **Use Cases:** * If you need a deep copy that preserves complex object types (like functions or custom objects), Lodash's `cloneDeep` is likely necessary. * For simpler data structures like arrays and primitives, the JSON clone might be sufficient and much faster. Let me know if you have any more questions or would like to explore specific use cases in more detail!
Related benchmarks:
Object cloning with Lodash clone vs cloneDeep vs merge vs ES6 object spread vs ES6 Object.assign vs JSON.parse(JSON.stringify())
cloneDeep vs JSON stringify + parse (long arr)
Lodash cloneDeep vs JSON parse
Object cloning with Lodash clone vs cloneDeep vs merge vs structuredClone vs JSON.parse(JSON.stringify(o))
Comments
Confirm delete:
Do you really want to delete benchmark?