большой в наши дни, так что ваш массив 100 int, вероятно, может удобно помещаться в кеше. Однако в массиве гораздо большего размера последовательное чтение будет выполняться быстрее, чем переключение между началом и концом массива.
вая массив, имеющий.length
100
содержащие элементы, имеющие значения0
в99
по соответствующим индексам, где требуется найти элемент массива, равныйn
: 51
.
Почему использование цикла для итерации от начала массива до конца быстрее, чем итерации от начала до конца и от конца до начала?
const arr = Array.from({length: 100}, (_, i) => i);
const n = 51;
const len = arr.length;
console.time("iterate from start");
for (let i = 0; i < len; i++) {
if (arr[i] === n) break;
}
console.timeEnd("iterate from start");
const arr = Array.from({length: 100}, (_, i) => i);
const n = 51;
const len = arr.length;
console.time("iterate from start and end");
for (let i = 0, k = len - 1; i < len && k >= 0; i++, k--) {
if (arr[i] === n || arr[k] === n) break;
}
console.timeEnd("iterate from start and end");
JSPerfhttps://jsperf.com/iterate-from-start-iterate-from-start-and-end/1