HTML Preparation code:
AخA
 
1
<script src="https://unpkg.com/immer@9/dist/immer.umd.production.min.js"></script>
Script Preparation code:
x
 
var INITIAL_DATA = { items: {}, count: 0, keys: [] }
for (var index = 0; index < 100; index++) {
  INITIAL_DATA[index] = { id: index, name: `ITEM-${index}`, value: Math.random() }
  INITIAL_DATA.count++
  INITIAL_DATA.keys.push(index)
}
var NEW_ITEM_ID = INITIAL_DATA.count +1
var im = immer;
Tests:
  • immer no freeze

     
    im.setAutoFreeze(false)
    var produce = im.default
    data = produce(INITIAL_DATA, draft => {
      draft.items[NEW_ITEM_ID] = { id: NEW_ITEM_ID, name: 'ITEM-NEW', value: 0 }
      draft.counter++
      draft.keys.push(NEW_ITEM_ID)
    })
  • immer freeze

     
    im.setAutoFreeze(true)
    var produce = im.default
    data = produce(INITIAL_DATA, draft => {
      draft.items[NEW_ITEM_ID] = { id: NEW_ITEM_ID, name: 'ITEM-NEW', value: 0 }
      draft.counter++
      draft.keys.push(NEW_ITEM_ID)
    })
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    immer no freeze
    immer freeze

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Chrome 109 on Windows
View result in a separate tab
Test name Executions per second
immer no freeze 920.9 Ops/sec
immer freeze 2181.7 Ops/sec