Test name | Executions per second |
---|---|
immer no freeze | 920.9 Ops/sec |
immer freeze | 2181.7 Ops/sec |
<script src="https://unpkg.com/immer@9/dist/immer.umd.production.min.js"></script>
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;
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)
})
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)
})