Commit | Line | Data |
---|---|---|
6dce9ba7 | 1 | /* eslint-disable no-unused-vars */ |
f522d7b9 JB |
2 | import Benchmark from 'benny' |
3 | import _ from 'lodash' | |
4 | import clone from 'just-clone' | |
5 | import deepClone from 'deep-clone' | |
95d31631 | 6 | import { generateRandomObject } from './benchmark-utils.mjs' |
6dce9ba7 | 7 | |
8e1fbc06 | 8 | const object = generateRandomObject() |
6dce9ba7 JB |
9 | |
10 | Benchmark.suite( | |
8e1fbc06 | 11 | `Deep clone object with ${Object.keys(object).length} keys`, |
5b907dbf | 12 | Benchmark.add('JSON stringify/parse', (obj = object) => { |
896570f7 | 13 | const objCloned = JSON.parse(JSON.stringify(obj)) |
6dce9ba7 | 14 | }), |
5b907dbf | 15 | Benchmark.add('structuredClone', (obj = object) => { |
896570f7 | 16 | const objCloned = structuredClone(obj) |
6dce9ba7 | 17 | }), |
5b907dbf | 18 | Benchmark.add('lodash cloneDeep', (obj = object) => { |
896570f7 | 19 | const objCloned = _.cloneDeep(obj) |
6dce9ba7 | 20 | }), |
5b907dbf | 21 | Benchmark.add('just-clone', (obj = object) => { |
896570f7 | 22 | const objCloned = clone(obj) |
a9aa1456 | 23 | }), |
f522d7b9 | 24 | Benchmark.add('deep-clone', (obj = object) => { |
896570f7 | 25 | const objCloned = deepClone(obj) |
f522d7b9 | 26 | }), |
6dce9ba7 JB |
27 | Benchmark.cycle(), |
28 | Benchmark.complete(), | |
29 | Benchmark.save({ | |
57f62217 | 30 | file: 'deep-clone-object', |
6dce9ba7 JB |
31 | format: 'json', |
32 | details: true | |
33 | }), | |
34 | Benchmark.save({ | |
57f62217 | 35 | file: 'deep-clone-object', |
6dce9ba7 JB |
36 | format: 'chart.html', |
37 | details: true | |
38 | }), | |
39 | Benchmark.save({ | |
57f62217 | 40 | file: 'deep-clone-object', |
6dce9ba7 JB |
41 | format: 'table.html', |
42 | details: true | |
43 | }) | |
f913c68c | 44 | ).catch(err => { |
4b16770a JB |
45 | console.error(err) |
46 | }) |