Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Lodash cloneDeep vs JSON parse+stringify vs native deepClone vs structuredClone with large object
(version: 0)
Comparing performance of:
lodash vs Native JSON parse vs Native deepClone vs Native structuredClone
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; } function deepClone2(obj) { return Object.keys({ ...obj }).reduce( (acc, key) => { acc[key] = getValue2(obj[key]); return acc; }, { ...obj } ); } function getValue2(value) { if (!value || typeof value !== "object") { return value; } return Array.isArray(value) ? value.map(getValue) : deepClone2(value); } var testCopy = null;
Tests:
lodash
testCopy = _.cloneDeep(testObject);
Native JSON parse
testCopy = JSON.parse(JSON.stringify(testObject));
Native deepClone
testCopy = deepClone(testObject);
Native structuredClone
testCopy = structuredClone(testObject);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
lodash
Native JSON parse
Native deepClone
Native structuredClone
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):
It seems like you've provided a long code snippet and benchmark data, but I'll try to extract the relevant information for you. **Benchmarking Libraries** You're comparing four different libraries: Lodash (`_`), JSON.parse(), native `deepClone()` function, and native `structuredClone()` function. The library with the highest number of executions per second will likely be considered faster. **Benchmark Results** Here are the benchmark results: | Test Name | Executions Per Second | | --- | --- | | Native deepClone | 83760.5390625 | | Lodash (`_`) | 22443.94140625 | | Native JSON parse | 20565.34375 | | Native structuredClone | 23998.83984375 | **Ranking** Based on the benchmark results, the ranking from fastest to slowest is: 1. **Native structuredClone**: 23998.83984375 executions per second 2. **Native deepClone**: 83760.5390625 executions per second 3. **Lodash (`_`)`: 22443.94140625 executions per second 4. **Native JSON parse**: 20565.34375 executions per second It appears that the native `structuredClone()` function is currently the fastest, followed closely by the native `deepClone()` function. Lodash and native JSON.parse() are slower in this benchmarking scenario.
Related benchmarks:
Lodash 2.2.0 cloneDeep vs JSON Clone w/ large nested object
Lodash cloneDeep vs JSON parse+stringify vs native deepClone with large objects
Lodash cloneDeep vs structuredClone vs JSON.parse + JSON.stringify but with big data
Lodash cloneDeep vs structuredClone vs recursiveDeepCopy vs JSON clone with a more deep test
Comments
Confirm delete:
Do you really want to delete benchmark?