Commit | Line | Data |
---|---|---|
b64305b2 | 1 | const Benchmark = require('benny') |
bb578730 | 2 | const { generateRandomInteger } = require('./benchmark-utils') |
b64305b2 | 3 | |
bb578730 JB |
4 | const size = generateRandomInteger(100000) |
5 | const testObject = {} | |
6 | for (let i = 0; i < size; i++) { | |
7 | testObject[i.toString()] = i | |
8 | } | |
b64305b2 JB |
9 | |
10 | Benchmark.suite( | |
bb578730 JB |
11 | `Is empty object with ${size} keys`, |
12 | Benchmark.add('Reflect keys', (obj = testObject) => { | |
baef0896 | 13 | return Reflect.ownKeys(obj).length === 0 && obj?.constructor === Object |
b64305b2 | 14 | }), |
bb578730 | 15 | Benchmark.add('Keys iteration ', (obj = testObject) => { |
9d7eeee7 | 16 | if (obj?.constructor !== Object) return false |
b64305b2 JB |
17 | // Iterates over the keys of an object, if |
18 | // any exist, return false. | |
19 | // eslint-disable-next-line no-unreachable-loop | |
20 | for (const _ in obj) return false | |
21 | return true | |
22 | }), | |
bb578730 | 23 | Benchmark.add('Object keys', (obj = testObject) => { |
baef0896 | 24 | return obj?.constructor === Object && !Object.keys(obj).length |
b64305b2 JB |
25 | }), |
26 | Benchmark.cycle(), | |
27 | Benchmark.complete(), | |
28 | Benchmark.save({ | |
bb578730 | 29 | file: 'is-empty-object', |
b64305b2 JB |
30 | format: 'json', |
31 | details: true | |
32 | }), | |
33 | Benchmark.save({ | |
bb578730 | 34 | file: 'is-empty-object', |
b64305b2 JB |
35 | format: 'chart.html', |
36 | details: true | |
37 | }), | |
38 | Benchmark.save({ | |
bb578730 | 39 | file: 'is-empty-object', |
b64305b2 JB |
40 | format: 'table.html', |
41 | details: true | |
42 | }) | |
43 | ) |