我遍历一个数组的数组,并通过关联键访问数组的值,这是一段代码片段。注意:我不会遍历整个数组,而只会遍历窗口大小为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"]);
这是一个适用于 Web 界面的分页器。我收到了 window_start 值并显示接下来的 10 个值。
一个大致的执行过程: 1. 接收 window_start 数字。 2. 开始循环并输入外部数组的 window_start-TH 数组。 3. 通过关联索引显示内部数组字段的值。 4. 移动到 window_start+1。
内部数组大约有40个字段。由于外部数组代表数据库表,因此它可能会变得非常大。现在我发现随着外部数组大小的增长,对10个窗口的执行需要越来越多的时间。
我需要有关代码性能的一些"性能理论":
如果我通过数字键输入内部数组的值,是否可以获得更好的性能?通常情况下,使用数字索引访问数组值比使用关联索引(字符串)访问更快吗?
输入长度为 N 的数组中的随机条目($array[random_num])的成本是多少?例如 O(N)、O(N/2)等。
最后,迭代数组的速度取决于数组的长度吗?我的固定长度迭代总是在10个元素的数组上进行,但是数组长度如何影响我的固定长度迭代?
谢谢 阿尔贝托
count
,$window_start+10
)移出循环;在循环之前只进行一次计算,而不是在每次迭代中都进行计算。如果您遵循下面的答案,这对您的情况不应该有任何影响,因为您将不再进行任何计算。 - jeroen