Я перебираю массив массивов и получаю доступ к значению массива через ассоциативные ключи, это фрагмент кода. Примечание: я никогда не перебираю весь массив, а только с окном 10.
//extract array from a db table (not real code)
$array = $query->executeAndFetchAssociative;
$window_start = 0;
for($i = $window_start; $i<count($array) && $i<$window_start+10; $i++)
echo($entry["db_field"]);
Это своего рода пагинатор для веб-интерфейса. Я получаю значение windows_start и отображаю следующие 10 значений.
Концептуальное исполнение:
- Получить номер windows_start
- Запустить цикл ввода массива window_start-TH внешнего массива
- Вывести значение поля внутреннего массива через ассоциативный индекс
- Переместить в window_start + 1
Внутренние массивы имеют около 40 полей. Внешний массив может сильно вырасти, поскольку он представляет таблицу базы данных.
Теперь я вижу, что когда внешний массив становится больше, выполнение над окнами 10 занимает все больше и больше времени.
Мне нужна некоторая «теория производительности» в моем коде:
Если я введу значения внутренних массивов с помощью цифровой клавиши, могу ли я иметь более высокую производительность? В целом, более быстрый доступ к значениям массива с числовым индексом, чем доступ с ассоциативным индексом (строка)?
Сколько стоит ввод случайной записи ($ array [random_num]) массива длины N? O (N), O (N / 2) только для примера
Наконец, скорость итерации по массиву зависит от длины массива? Я имею в виду, что я всегда перебираю 10 элементов массива, но как длина массива влияет на мою итерацию фиксированной длины?
Спасибо
Альберто