HTML Preparation code:
AخA
 
1
<script src="https://cdn.jsdelivr.net/npm/immer@3.1.3/dist/immer.umd.min.js"></script>
2
<script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
3
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>
Script Preparation code:
 
state =  {
    data: {
      data1: {
        data2: 'test',
      },
      data3: Array.from({length: 1000}).map(() => document.createElement('div'))
    }
  };
Tests:
  • Produce

     
    const result = immer.produce(state, draft => { draft.data.data1.data2 = 'updated' })
  • CloneDeep

     
    const result = _.cloneDeep(state);
    result.data.data1.data2 = 'updated';
  • Ramda

     
    const result = R.clone(state);
    result.data.data1.data2 = 'updated';
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Produce
    CloneDeep
    Ramda

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 3 months ago)
Mozilla/5.0 (iPad; CPU OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) EdgiOS/131.0.2903.145 Version/17.0 Mobile/15E148 Safari/604.1
Mobile Safari 17 on iOS 17.7.2
View result in a separate tab
Test name Executions per second
Produce 385939.8 Ops/sec
CloneDeep 4237.1 Ops/sec
Ramda 4158.4 Ops/sec