'How does accessing by array index affect efficiency?
Lets say, in a for loop, i am accessing 2 indexes of an array say x and x+1, and comparing those two things to find out how often the numbers of the array increase or decrease.
Is it more/less/equally efficient to have a variable outside of the loop that i reassign each loop, or simply just access it by index inside the loop?
Such as
let count = 0;
let previousNum = data[0];
for (let i = 1; i < data.length; i++) {
const currentNum = data[i];
if (currentNum > previousNum) {
count++;
}
previousNum = currentNum;
}
versus
let count = 0;
for (let i = 1; i < d.length; i++) {
const firstNum = data[i - 1];
const secondNum = data[i];
if (secondNum > firstNum) {
count++;
}
}
Like on a fundamental level, when it is accessing these indexes, is it iterating through the array to reach the value for these indexes or is it accessing them directly? By accessing only one index inside the loop vs 2 am i increasing the efficiency of the code or is it no difference?
Solution 1:[1]
Like on a fundamental level, when it is accessing these indexes, is it iterating through the array to reach the value for these indexes or is it accessing them directly?
No, it is not. If possible, the JavaScript engine will have a true array in memory it can index into directly (e.g., arrayMemory[baseArrayMemoryAddress + (index * arrayElementSize)]. If not possible (because the array is sparse or similar), it will at least have a better-than-linear means of accessing the array slots.
As to whether in your specific case using previousNum is beneficial, it's extremely unlikely to matter. If you run into a situation where you think it matters, benchmark the two versions of the real code to see.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | T.J. Crowder |
