Run details:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Firefox 60
Ubuntu
Desktop
6 years ago
Test name Executions per second
Recursive Deep Copy 1515222.1 Ops/sec
JSON Deep Copy 36314.7 Ops/sec
lodash clone 12063.3 Ops/sec
HTML Preparation code:
AخA
 
1
<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:
x
 
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));
}
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);