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