It is fast, It is nearly more than 2 or 20 times faster than immer in different situations. Click this online perf demo (https://codesandbox.io/s/limu-simple-perf-case-ycky1t?file=/...) to review the amazing result.
See more perf test result 1. git clone git@github.com:tnfe/limu.git 2. cd benchmark 3. npm i 4. node ./limu-vs-immer.js
You can change the params in limu-vs-immer.js file to test perf of different situations
const hasArr = false; // operate arr or not const lessDeepOp = true; // has more deep operation or not
The perf result at macbook 2021 max pro is:
-----------------------[ hasArr true, lessOp true ]------------------- (reuseBase: true, autoFreeze: true) immer 2.797 ms : limu 1.287 ms (reuseBase: false, autoFreeze: true) immer 2.835 ms : limu 1.313 ms (reuseBase: true, autoFreeze: false) immer 2.049 ms : limu 0.089 ms (reuseBase: false, autoFreeze: false) immer 2.096 ms : limu 0.146 ms
-----------------------[ hasArr true, lessOp false ]------------------ (reuseBase: true, autoFreeze: true) immer 2.946 ms : limu 1.268 ms (reuseBase: false, autoFreeze: true) immer 3.005 ms : limu 1.345 ms (reuseBase: true, autoFreeze: false) immer 2.162 ms : limu 0.147 ms (reuseBase: false, autoFreeze: false) immer 2.169 ms : limu 0.161 ms
-----------------------[ hasArr false, lessOp true ]------------------ (reuseBase: true, autoFreeze: true) immer 2.253 ms : limu 0.659 ms (reuseBase: false, autoFreeze: true) immer 2.261 ms : limu 0.705 ms (reuseBase: true, autoFreeze: false) immer 1.472 ms : limu 0.058 ms (reuseBase: false, autoFreeze: false) immer 1.504 ms : limu 0.064 ms
-----------------------[ hasArr false, lessOp true ]------------------ (reuseBase: true, autoFreeze: true) immer 2.086 ms : limu 0.604 ms (reuseBase: false, autoFreeze: true) immer 2.201 ms : limu 0.643 ms (reuseBase: true, autoFreeze: false) immer 1.383 ms : limu 0.022 ms (reuseBase: false, autoFreeze: false) immer 1.42 ms : limu 0.021 ms