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