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