Digamos, en un bucle for, estoy accediendo a 2 índices de una matriz, digamos x y x+1, y comparo esas dos cosas para averiguar con qué frecuencia aumentan o disminuyen los números de la matriz.
¿Es más/menos/igualmente eficiente tener una variable fuera del ciclo que reasigno a cada ciclo, o simplemente acceder a ella por índice dentro del ciclo?
Como
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++; } }Como en un nivel fundamental, cuando accede a estos índices, ¿está iterando a través de la matriz para alcanzar el valor de estos índices o está accediendo a ellos directamente? Al acceder a solo un índice dentro del ciclo frente a 2, ¿estoy aumentando la eficiencia del código o no hay diferencia?
Como en un nivel fundamental, cuando accede a estos índices, ¿está iterando a través de la matriz para alcanzar el valor de estos índices o está accediendo a ellos directamente?
No, no es. Si es posible, el motor de JavaScript tendrá una verdadera matriz en la memoria que puede indexar directamente (por ejemplo, arrayMemory[baseArrayMemoryAddress + (index * arrayElementSize)] . Si no es posible (porque la matriz es escasa o similar), al menos tendrá un medio mejor que el lineal para acceder a las ranuras del arreglo.
En cuanto a si en su caso específico usar previousNum es beneficioso, es muy poco probable que importe. Si se encuentra con una situación en la que cree que es importante, compare las dos versiones del código real para ver.