Immer(produce) vs lodash(cloneDeep)
Date tested:
one year ago
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36
Test name
Executions per second
Immer produce
295133.3 Ops/sec
Lodash clonedeep
633767.3 Ops/sec
Benchmark definition (click to collapse):
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:
state = { data: { data_1: { data_1_1: 'data_1_1', data_1_2: 'data_1_2' }, data_2: { data_2_1: 'data_2_1', data_2_2: { data_2_2_1: 'value' } }, } };
Tests:
Immer produce
const result = immer.produce(state, draft => { draft.data.data_1.data_1_1 = 'data_1_1_updated', draft.data.data_2.data_2_2.data_2_2_1 = 'data_2_2_1' })
Lodash clonedeep
const result = _.cloneDeep(state); result.data.data_1.data_1_1 = 'data_1_1_updated'; result.data.data_2.data_2_2.data_2_2_1 = 'data_2_2_1';
Open this result on MeasureThat.net