[英]How can I make these loops faster?
我正在為正在研究的項目使用PHP4。 我不得不擴展此代碼(它對手頭的數據足夠快地工作):
for ($i = 1; $i <= count($arr); $i++) {
$a = $arr[$i]['date'];
for ($y = 1; $y <= 10000000; $y++) {
$c = $arr[$i]['data'][$y];
// here I inserted another loop
}
}
我在其中插入了另一個循環,如下所示:
for ($k = $i + 1; $k <= count($arr); $k++) {
$next_is_empty = false;
$next_is_null = false;
if ($arr[$k]['data'][$y] == '') {
$next_is_empty = true;
break;
} elsif (is_null($arr[$k]['data'][$y])) {
$next_is_null = true;
break;
}
}
因為我是用內存編寫的,所以代碼更像是一個通用概念,而不是特定的工作代碼。 但是,我認為我的問題足夠准確。 因此,我插入的這個循環在大多數情況下都可以正常工作,但在某些情況下太慢了-我該如何加快速度? 我也基於此示例對性能的一般規則感到好奇。 我知道最好避免嵌套循環,但是例如為什么為什么如果我將變量$next_is_empty/null
放在循環前面,代碼就可以足夠快地工作(那么解決方案是錯誤的,但是足夠快)? 我知道需要進行更多的重新分配,但是他們為什么要花這么多時間?
不要在循環中使用count(),在不同的行中使用count(),然后在循環中使用變量
$count = count($arr);
for ($i = 1; $i <= $count; $i++) {
$a = $arr[i]['date'];
for ($y = 1; $y <= 10000000; $y++) {
$c = $arr[i]['data'][y];
// here I inserted another loop
}
}
這樣有更好的基准測試結果
就在循環外定義變量$ next_is_empty而言,據我所知,這很難回答,這取決於您使用的PHP版本,但最好放在外面,那就是原始的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.