HTML Preparation code:
AخA
 
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/immer/9.0.5/immer.umd.production.min.js"></script>
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js'></script>
Script Preparation code:
x
 
var MyObject = {
    description: 'Creates a deep copy of source, which should be an object or an array.',
    myNumber: 123456789,
    myBoolean: true,
    testarray: [{
        name: 1
    }, {
        name: 2
    }, {
        name: 3
    }],
    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:
  • immer

     
    myCopy = immer.produce(MyObject, draft => { draft.jayson.parse = 'updated' })
  • deepclone

     
    myCopy = _.cloneDeep(MyObject);
    myCopy.jayson.parse = 'updated'
  • Json.stringify

     
    myCopy = JSON.parse(JSON.stringify(MyObject));
    myCopy.jayson.parse = 'updated'
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    immer
    deepclone
    Json.stringify

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 2 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Chrome 108 on Mac OS X 10.15.7
View result in a separate tab
Test name Executions per second
immer 240307.6 Ops/sec
deepclone 573483.1 Ops/sec
Json.stringify 508066.0 Ops/sec