HTML Preparation code:
x
 
1
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.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,
  myDate: new Date(),
  myDate2: new Date(),
  myDate3: new Date(),
  myDate4: new Date(),
  myDate5: new Date(),
  myDate6: new Date(),
  myDate7: new Date(),
  myDate8: new Date(),
  myDate9: new Date(),
  myDate10: new Date(),
  jayson: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson2: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson3: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson4: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson5: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson6: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson7: {
    stringify: 'JSON.stringify() method converts a JavaScript value to a JSON string....',
    parse: 'JSON.parse() method parses a JSON string...'
  },
  jayson8: {
    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);
  • Lodash clone

     
    myCopy = _.clone(MyObject);
  • new Object

     
    myCopy = {...MyObject}
  • Custom deep spread

     
    myCopy = {...MyObject}
    myCopy.jayson = {...myCopy.jayson}
    myCopy.jayson2 = {...myCopy.jayson2}
    myCopy.jayson3 = {...myCopy.jayson3}
    myCopy.jayson4 = {...myCopy.jayson4}
    myCopy.jayson5 = {...myCopy.jayson5}
    myCopy.jayson6 = {...myCopy.jayson6}
    myCopy.jayson7 = {...myCopy.jayson7}
    myCopy.jayson7 = {...myCopy.jayson8}
  • Object assign

     
    myCopy = Object.assign({}, MyObject)
  • Custom deep assign

     
    myCopy = Object.assign({}, MyObject)
    myCopy.jayson = Object.assign({}, myCopy.jayson)
    myCopy.jayson2 = Object.assign({}, myCopy.jayson2)
    myCopy.jayson3 = Object.assign({}, myCopy.jayson3)
    myCopy.jayson4 = Object.assign({}, myCopy.jayson4)
    myCopy.jayson5 = Object.assign({}, myCopy.jayson5)
    myCopy.jayson6 = Object.assign({}, myCopy.jayson6)
    myCopy.jayson7 = Object.assign({}, myCopy.jayson7)
    myCopy.jayson7 = Object.assign({}, myCopy.jayson8)
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Lodash cloneDeep
    Lodash clone
    new Object
    Custom deep spread
    Object assign
    Custom deep assign

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 5 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36
Chrome 74 on Windows
View result in a separate tab
Test name Executions per second
Lodash cloneDeep 59972.8 Ops/sec
Lodash clone 284307.0 Ops/sec
new Object 4289890.0 Ops/sec
Custom deep spread 606092.2 Ops/sec
Object assign 574065.3 Ops/sec
Custom deep assign 202914.5 Ops/sec