Array Iterations
JS
S
JavaScriptfor..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