Commit | Line | Data |
---|---|---|
f522d7b9 | 1 | import Benchmark from 'benny' |
0c01f51c | 2 | |
95d31631 | 3 | import { generateRandomObject } from './benchmark-utils.mjs' |
b64305b2 | 4 | |
8e1fbc06 | 5 | const object = generateRandomObject() |
b64305b2 JB |
6 | |
7 | Benchmark.suite( | |
8e1fbc06 | 8 | `Is empty object with ${Object.keys(object).length} keys`, |
5b907dbf | 9 | Benchmark.add('Reflect keys', (obj = object) => { |
2d1206f1 | 10 | return obj?.constructor === Object && Reflect.ownKeys(obj).length === 0 |
b64305b2 | 11 | }), |
5b907dbf | 12 | Benchmark.add('Keys iteration', (obj = object) => { |
9d7eeee7 | 13 | if (obj?.constructor !== Object) return false |
b64305b2 JB |
14 | // Iterates over the keys of an object, if |
15 | // any exist, return false. | |
16 | // eslint-disable-next-line no-unreachable-loop | |
17 | for (const _ in obj) return false | |
18 | return true | |
19 | }), | |
5b907dbf | 20 | Benchmark.add('Object keys', (obj = object) => { |
2d1206f1 | 21 | return obj?.constructor === Object && Object.keys(obj).length === 0 |
b64305b2 JB |
22 | }), |
23 | Benchmark.cycle(), | |
24 | Benchmark.complete(), | |
25 | Benchmark.save({ | |
bb578730 | 26 | file: 'is-empty-object', |
b64305b2 JB |
27 | format: 'json', |
28 | details: true | |
29 | }), | |
30 | Benchmark.save({ | |
bb578730 | 31 | file: 'is-empty-object', |
b64305b2 JB |
32 | format: 'chart.html', |
33 | details: true | |
34 | }), | |
35 | Benchmark.save({ | |
bb578730 | 36 | file: 'is-empty-object', |
b64305b2 JB |
37 | format: 'table.html', |
38 | details: true | |
39 | }) | |
4aa2893a | 40 | ).catch(console.error) |