Array Iterations

JS
S
JavaScript

for..in is the fastest way

1const intersection = splittedValues.filter((splittedValuesItem: string) => prev.hse.includes(splittedValuesItem));
2const difference = splittedValues.filter((splittedValuesItem: string) => !prev.hse.includes(splittedValuesItem));
3
4const { PerformanceObserver, performance } = require('perf_hooks');
5
6let objectSize = 1000000;
7let iterations = 10;
8
9console.log("Starting performance test with %d object size and %d iterations", objectSize, iterations);
10
11let values = {
12    ENTRIES: 0,
13    KEYS: 0,
14    VALUES: 0,
15    FORIN: 0,
16    GETOWP: 0
17}
18
19const obs = new PerformanceObserver((items) => {
20    let entry = items.getEntries()[0];
21    console.log(entry.name, entry.duration);
22    values[entry.name] += entry.duration;
23    performance.clearMarks();
24});
25obs.observe({ entryTypes: ['measure'] });
26
27function generateObject() {
28    let obj = {};
29    for (let i = 0; i < objectSize; i++) {
30        obj['key' + i] = 'val' + i;
31    }
32    return obj;
33}
34
35
36
37for (let i = 0; i < iterations; i++) {
38    let obj = generateObject();
39
40    //Object.entries
41    performance.mark('A');
42    Object.entries(obj).forEach(entry => {
43        let key = entry[0];
44        let value = entry[1];
45    });
46    performance.mark('B');
47    performance.measure('ENTRIES', 'A', 'B');
48
49    //Object.Keys
50    performance.mark('A');
51    Object.keys(obj).forEach(key => {
52        let value = obj[key];
53    });
54    performance.mark('B');
55    performance.measure('KEYS', 'A', 'B');
56
57    //Object.Values
58    performance.mark('A');
59    Object.values(obj).forEach(value => {
60
61    });
62    performance.mark('B');
63    performance.measure('VALUES', 'A', 'B');
64
65    //For In
66    performance.mark('A');
67    for (const key in obj) {
68        let value = obj[key];
69    }
70    performance.mark('B');
71    performance.measure('FORIN', 'A', 'B');
72
73    //Object.getOwnPropertyNames
74    performance.mark('A');
75    Object.getOwnPropertyNames(obj).forEach(key => {
76        let value = obj[key];
77    });
78    performance.mark('B');
79    performance.measure('GETOWP', 'A', 'B');
80}
81
82
83console.log(Object.entries(values).sort((a, b) => {
84    return a[1] - b[1];
85}));

Created on 2/27/2020