import deepClone from 'deep-clone'
+import { produce } from 'immer'
import clone from 'just-clone'
import _ from 'lodash'
import { clone as ramdaClone } from 'ramda'
.add('remeda clone', (obj = object) => {
remedaClone(obj)
})
+ .add('immer produce', (obj = object) => {
+ produce(obj, draft => ({ ...draft }))
+ })
await bench.run()
"deep-clone": "^4.0.0",
"deepmerge": "^4.3.1",
"hash-object": "^5.1.0",
+ "immer": "^11.1.4",
"just-clone": "^6.2.0",
"lodash": "^4.17.23",
+ "nanoid": "^5.1.6",
"node-object-hash": "^3.1.1",
"object-hash": "^3.0.0",
"ramda": "^0.32.0",
hash-object:
specifier: ^5.1.0
version: 5.1.0
+ immer:
+ specifier: ^11.1.4
+ version: 11.1.4
just-clone:
specifier: ^6.2.0
version: 6.2.0
lodash:
specifier: ^4.17.23
version: 4.17.23
+ nanoid:
+ specifier: ^5.1.6
+ version: 5.1.6
node-object-hash:
specifier: ^3.1.1
version: 3.1.1
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
engines: {node: '>= 4'}
+ immer@11.1.4:
+ resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==}
+
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==}
engines: {node: '>=20.17'}
+ nanoid@5.1.6:
+ resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+
napi-postinstall@0.3.4:
resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
ignore@7.0.5: {}
+ immer@11.1.4: {}
+
import-fresh@3.3.1:
dependencies:
parent-module: 1.0.1
nano-spawn@2.0.0: {}
+ nanoid@5.1.6: {}
+
napi-postinstall@0.3.4: {}
natural-compare@1.4.0: {}
+import { nanoid } from 'nanoid'
import { randomUUID } from 'node:crypto'
import { Bench } from 'tinybench'
import { v4 as uuid } from 'uuid'
bench.add('uuid', () => {
uuid()
})
+bench.add('nanoid', () => {
+ nanoid()
+})
await bench.run()
console.table(bench.table())