Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
Feature Requests
FAQ
Register
Log In
Run results for:
Lodash cloneDeep vs JSON Clone vs Ramda Clone vs hand rolled vs spread vs obj.assign vs structured clone
just benchmarking things
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 17_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1
Browser:
Mobile Safari 17
Operating system:
iOS 17.5.1
Device Platform:
Mobile
Date tested:
2 years ago
Benchmark engine:
Benchmark.js
spread
7.5M/s
obj.assign
5.0M/s
Lodash cloneDeep
2.2M/s
Ramda clone
1.6M/s
Json clone
1.5M/s
hand rolled
1.4M/s
Structured Clone
770K/s
View exact numbers
Test name
Executions per second
✓
spread
7,473,560 Ops/sec
obj.assign
4,951,818 Ops/sec
Lodash cloneDeep
2,199,883 Ops/sec
Ramda clone
1,584,661 Ops/sec
Json clone
1,471,718 Ops/sec
hand rolled
1,399,644 Ops/sec
Structured Clone
769,674 Ops/sec
HTML Preparation code:
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clone/2.1.2/clone.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...' } }; var myCopy = null;
Tests:
Lodash cloneDeep
myCopy = _.cloneDeep(MyObject);
Json clone
myCopy = JSON.parse(JSON.stringify(MyObject));
Ramda clone
myCopy = R.clone(MyObject);
hand rolled
const cp=(obj)=>"object" === typeof obj ? Object.fromEntries(Object.entries(obj).map(([k,v])=>[k,cp(v)])) : obj myCopy = cp(MyObject)
spread
myCopy = {...MyObject}
obj.assign
myCopy = Object.assign({}, MyObject)
Structured Clone
myCopy = structuredClone(MyObject)