<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.2.0/lodash.min.js'></script>
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;
myCopy = _.cloneDeep(MyObject);
myCopy = JSON.parse(JSON.stringify(MyObject));
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
Lodash cloneDeep | |
Json clone |
Test name | Executions per second |
---|---|
Lodash cloneDeep | 745.6 Ops/sec |
Json clone | 5523.9 Ops/sec |
A new benchmarking challenge!
To answer your question, I'll need to follow these steps:
However, before I can provide a response, I'd like to clarify that there are two test cases:
Test Case 1: Lodash cloneDeep
myCopy = _.cloneDeep(MyObject);
This uses the _.cloneDeep()
function from Lodash to create a deep copy of the MyObject
object.
Test Case 2: JSON clone
myCopy = JSON.parse(JSON.stringify(MyObject));
This uses the built-in JSON.stringify()
and JSON.parse()
functions to create a deep copy of the MyObject
object.
Please let me know which test case you'd like me to focus on or if you have any specific questions about these test cases!