Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Immer vs Spread Reducer With Filled State (replace with diff key and value)
(version: 0)
Comparing performance of:
immer vs Mutate vs Spread vs immer pull up
Created:
6 years ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<script src="https://cdn.jsdelivr.net/npm/immer@3.1.3/dist/immer.umd.min.js"></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js'></script>
Script Preparation code:
function getItems(count) { let id = 1; return _.times(count, () => ({ name: "city" + id++, visited: true })) } data = getItems(1000).reduce((acc, curr) => ({ ...acc, [curr.name]: curr.visited }), {}) action = { name: 'city1', visited: false };
Tests:
immer
const reducer = (state, curr) => { return immer.produce(state, draft => { draft[curr.name] = curr.visited }) }; reducer(data, action)
Mutate
const reducer = (draft, curr) => { draft[curr.name] = curr.visited; return draft; }; reducer(data, action)
Spread
const reducer = (draft, curr) => ({ ...draft, [curr.name]: curr.visited }); reducer(data, action)
immer pull up
const reducer = immer.produce((draft, curr) => { draft[curr.name] = curr.visited; }); reducer(data, action)
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (4)
Previous results
Fork
Test case name
Result
immer
Mutate
Spread
immer pull up
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
Browser/OS:
Chrome 128 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
immer
1848.1 Ops/sec
Mutate
4288130.0 Ops/sec
Spread
628522.2 Ops/sec
immer pull up
1125888.8 Ops/sec
Related benchmarks:
Immer vs Spread Reducer With Filled State
Immer vs Spread Reducer With Filled State (replace with same key and value)
Immer vs Spread Only Reducer With Filled State
Object.assign vs Immer vs Spread Reducer With Filled State
Comments
Confirm delete:
Do you really want to delete benchmark?