簡體   English   中英

如何使這些循環更快?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM