Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Object Deep Copy with structuredclone
(version: 0)
Produce a deep copy of a Javascript object where nested objects are not simply references to the originals.
Comparing performance of:
Recursive Deep Copy vs JSON Deep Copy vs lodash clone vs structuredCloneDeepCopy
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.10/lodash.js"></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
Script Preparation code:
function recursiveDeepCopy(obj) { return Object.keys(obj).reduce((v, d) => Object.assign(v, { [d]: (obj[d].constructor === Object) ? recursiveDeepCopy(obj[d]) : obj[d] }), {}); } function jsonDeepCopy(o) { return JSON.parse(JSON.stringify(o)); } function structuredCloneDeepCopy(o) { return structuredClone(o); } var dimensions = [{ "dimensions": [{ "runtime": { "common": { "client": null, "server": null } } }, { "device": { "android": null, "blackberry": null, "iemobile": null, "iphone": null, "ipad": null, "kindle": null, "opera-mini": null, "palm": null } }, { "environment": { "development": { "dev": null, "test": null }, "production": { "stage": null, "prod": null } } }, { "lang": { "ar": { "ar-JO": null, "ar-MA": null, "ar-SA": null, "ar-EG": null }, "bn": { "bn-IN": null }, "ca": { "ca-ES": null }, "cs": { "cs-CZ": null }, "da": { "da-DK": null }, "de": { "de-AT": null, "de-DE": null }, "el": { "el-GR": null }, "en": { "en-AU": null, "en-BG": null, "en-CA": null, "en-GB": null, "en-GY": null, "en-HK": null, "en-IE": null, "en-IN": null, "en-MY": null, "en-NZ": null, "en-PH": null, "en-SG": null, "en-US": null, "en-ZA": null }, "es": { "es-AR": null, "es-BO": null, "es-CL": null, "es-CO": null, "es-EC": null, "es-ES": null, "es-MX": null, "es-PE": null, "es-PY": null, "es-US": null, "es-UY": null, "es-VE": null }, "fi": { "fi-FI": null }, "fr": { "fr-BE": null, "fr-CA": null, "fr-FR": null, "fr-GF": null }, "hi": { "hi-IN": null }, "hu": { "hu-HU": null }, "id": { "id-ID": null }, "it": { "it-IT": null }, "ja": { "ja-JP": null }, "kn": { "kn-IN": null }, "ko": { "ko-KR": null }, "ml": { "ml-IN": null }, "mr": { "mr-IN": null }, "ms": { "ms-MY": null }, "nb": { "nb-NO": null }, "nl": { "nl-BE": null, "nl-NL": null, "nl-SR": null }, "pl": { "pl-PL": null }, "pt": { "pt-BR": null }, "ro": { "ro-RO": null }, "ru": { "ru-RU": null }, "sv": { "sv-SE": null }, "ta": { "ta-IN": null }, "te": { "te-IN": null }, "th": { "th-TH": null }, "tr": { "tr-TR": null }, "vi": { "vi-VN": null }, "zh": { "zh-Hans": { "zh-Hans-CN": null }, "zh-Hant": { "zh-Hant-HK": null, "zh-Hant-TW": null } } } }] }]
Tests:
Recursive Deep Copy
var dimensionsCopy = recursiveDeepCopy(dimensions);
JSON Deep Copy
var dimensionsCopy = jsonDeepCopy(dimensions);
lodash clone
var dimensionsCopy = _.cloneDeep(dimensions);
structuredCloneDeepCopy
var structuredCloneCopy = structuredCloneDeepCopy(dimensions);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
Recursive Deep Copy
JSON Deep Copy
lodash clone
structuredCloneDeepCopy
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):
I'll provide a solution to the problem. The problem appears to be related to benchmarking the performance of different libraries (jsonDeepCopy, _.cloneDeep, and structuredCloneDeepCopy) for recursive deep copying or deep cloning of an object. Here's a step-by-step approach: 1. **Understand the input data**: The input data is in JSON format and contains various languages (e.g., ko-KR, ml-IN, mr-IN, ms-MY, nb-NO, nl-BE, nl-NL, nl-SR, pl-PL, pt-BR, ro-RO, ru-RU, sv-SE, ta-IN, te-IN, th-TH, tr-TR, vi-VN, zh-Hans-CN, zh-Hant-HK, and zh-Hant-TW) with their respective dimensions. 2. **Choose a programming language**: Since the input data is in JSON format, it's likely that any of these libraries can be used in JavaScript (which is commonly used for web development). 3. **Implement the recursive deep copying or deep cloning functions**: * jsonDeepCopy: You'll need to implement this function yourself. * _.cloneDeep: This function is part of Lodash, so you can use it as is. * structuredCloneDeepCopy: If available in your JavaScript environment, you can use it. Otherwise, you may need to create a custom implementation or find an alternative. 4. **Benchmark the performance**: Use a benchmarking library (e.g., Benchmark.js) to measure the execution time of each function for different inputs. Example code using Lodash: ```javascript const _ = require('lodash'); function jsonDeepCopy(dimensions) { return JSON.parse(JSON.stringify(dimensions)); } // Benchmarking code const dimensions = /* your input data */; console.time('jsonDeepCopy'); for (let i = 0; i < 10000; i++) { const copy = jsonDeepCopy(dimensions); } console.timeEnd('jsonDeepCopy'); console.time('_cloneDeep'); for (let i = 0; i < 10000; i++) { const copy = _.cloneDeep(dimensions); } console.timeEnd('_cloneDeep'); console.time('structuredCloneDeepCopy'); // Not available in this example // ... or implement a custom function ... ``` Note that the actual implementation and benchmarking code will depend on your specific requirements and environment. After running the benchmarks, you can compare the results to determine which library is the most efficient for your use case.
Related benchmarks:
Object Deep Copy
Object Deep Copy e
Object Deep Copy 2
Object Deep Copy vs structuredClone
Comments
Confirm delete:
Do you really want to delete benchmark?