build(deps-dev): apply updates
[benchmarks-js.git] / deep-clone-object.mjs
CommitLineData
f522d7b9 1import deepClone from 'deep-clone'
0c01f51c
JB
2import clone from 'just-clone'
3import _ from 'lodash'
ab9a08f3 4import { clone as rambdaClone } from 'rambda'
4676a95c 5import { bench, group, run } from 'tatami-ng'
0c01f51c 6
95d31631 7import { generateRandomObject } from './benchmark-utils.mjs'
6dce9ba7 8
8e1fbc06 9const object = generateRandomObject()
6dce9ba7 10
ab9a08f3
JB
11group(`Deep clone object with ${Object.keys(object).length} keys`, () => {
12 bench('JSON stringify/parse', (obj = object) => {
bf2f087f 13 JSON.parse(JSON.stringify(obj))
ab9a08f3
JB
14 })
15 bench('structuredClone', (obj = object) => {
bf2f087f 16 structuredClone(obj)
ab9a08f3
JB
17 })
18 bench('lodash cloneDeep', (obj = object) => {
bf2f087f 19 _.cloneDeep(obj)
ab9a08f3
JB
20 })
21 bench('rambda clone', (obj = object) => {
bf2f087f 22 rambdaClone(obj)
ab9a08f3
JB
23 })
24 bench('just-clone', (obj = object) => {
bf2f087f 25 clone(obj)
ab9a08f3
JB
26 })
27 bench('deep-clone', (obj = object) => {
bf2f087f 28 deepClone(obj)
6dce9ba7 29 })
ab9a08f3
JB
30})
31
32await run({
ebf80fe4 33 units: true,
ab9a08f3 34})