Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Lodash cloneDeep vs JSON parse+stringify vs native deepClone with large objects
(version: 0)
Comparing performance of:
lodash vs Native JSON parse vs Native deepClone
Created:
3 years ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
var testObject = { someKey: { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: null, someKey3: [ { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, { someKey1: "some text some text some text some text some text some text some text some text", someKey2: "some text some text some text some text some text some text some text some text", }, ], }, ], }, }; function deepClone(obj) { return Object.keys(obj).reduce( (acc, key) => { acc[key] = getValue(obj[key]); return acc; }, { ...obj } ); } function getValue(value) { if (Array.isArray(value)) { return value.map(getValue); } if (value && typeof value === "object") { return deepClone(value); } return value; } var testCopy = null;
Tests:
lodash
testCopy = _.cloneDeep(testObject);
Native JSON parse
testCopy = JSON.parse(JSON.stringify(testObject));
Native deepClone
testCopy = deepClone(testObject);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (3)
Previous results
Fork
Test case name
Result
lodash
Native JSON parse
Native deepClone
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
A lengthy benchmark result with multiple test cases and different browsers! To provide an answer, I'll need to analyze the data and identify any trends or patterns. **Analysis** 1. **Benchmarks**: We have three benchmarks: * "Native deepClone" ( Firefox 99 on Mac OS X 10.14) * "Native JSON parse" (Firefox 99 on Mac OS X 10.14) * "lodash" (Firefox 99 on Mac OS X 10.14) 2. **Browser**: All benchmarks are run on the same browser, Firefox 99. 3. **Device Platform**: The benchmark is run on a desktop platform, specifically Mac OS X 10.14. **Insights** Based on the data, here's what I can infer: * **Native deepClone and Native JSON parse**: Both of these benchmarks have similar execution rates (72046.71875 and 19267.5859375, respectively), suggesting that they are relatively efficient in this specific environment. * **lodash**: The "lodash" benchmark has a significantly lower execution rate (17428.720703125) compared to the native deepClone and Native JSON parse benchmarks. **Conclusion** Without more context or specific questions about these results, I'll summarize by saying: The native deepClone and Native JSON parse methods have comparable performance on this specific setup, while the "lodash" method performs slightly better.
Related benchmarks:
Lodash 2.2.0 cloneDeep vs JSON Clone w/ large nested object
lodash clonedeep vs json.parse(stringify()) vs recursivecopy new big
Lodash clone deep object array vs string array
Lodash cloneDeep vs JSON parse
Lodash cloneDeep vs structuredClone vs recursiveDeepCopy vs JSON clone with a more deep test
Comments
Confirm delete:
Do you really want to delete benchmark?