Skip to content

Instantly share code, notes, and snippets.

@kuanyui
Last active January 31, 2020 10:40
Show Gist options
  • Save kuanyui/9e55c0e64f7cb3d76bcd46398fe5592d to your computer and use it in GitHub Desktop.
Save kuanyui/9e55c0e64f7cb3d76bcd46398fe5592d to your computer and use it in GitHub Desktop.
[JavaScript] Benchmark the Accessing Performance amoung Array, Object, Map (via USELESS http://jsben.ch/index )
OBJ = {};
ARR = [];
MAP = new Map();
KEYS = [];
LENGTH = 100000;
for (let i=0; i<LENGTH; i++) {
const key = 'k' + i;
const val = { name: 'foo', id: Math.random(), count: 0 };
KEYS.push(key);
OBJ[key] = val;
MAP[key] = val;
ARR[i] = val;
}
function dummy(val) {
val.count += 1;
}
RAND_I = [];
RAND_KEYS = [];
while (RAND_I.length <= LENGTH) {
const i = Math.round(Math.random() * (LENGTH-1));
RAND_I.push(i);
RAND_KEYS.push(KEYS[i]);
}
for (const i of RAND_I) {
dummy(ARR[i]);
}
for (const k of RAND_KEYS) {
dummy(MAP[k]);
}
for (const k of RAND_KEYS) {
dummy(OBJ[k]);
}

Large Gap

Percentage (%)

LENGTH Array Map Object
1000 14 100 99
5000 8 99 100
10000 7 96 100
100000 4 96 100

Milliseconds (ms)

LENGTH Array Map Object
1000 228 1671 1658
5000 438 5121 5195
10000 636 8299 8606
100000 1164 27167 28307

Small Gap (Occur less)

Percentage (%)

LENGTH Array Map Object
1000 68 100 95
5000 43 100 88
10000 58 100 99

Milliseconds (ms)

LENGTH Array Map Object
1000 777 1146 1087
5000 962 2241 1792
10000 1215 2106 2090
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment