0

短いサーキットの質問はすでに私が知っています。しかし、ここで機能しない理由を知りたいです。短絡は、並列処理またはパイプライン処理による影響がありますか。

コードで非常に奇妙な状況に直面しました。コードは次のようになります

foreach($feeds as $k=>$feed)
{
foreach($filtered as $item)
{
 if(($feed['object'] == $item['object']) && (($feed['time']-$item['time'])<10))
   {
   Code....
   }
  }
 }

上記のように両方の条件を同じIf()ブロックに入れると、両方が比較されます。しかし、それらをネストされたブロックに入れると、実行にかかる時間が大幅に短縮されます。

質問: && は短絡演算子として機能しますか? つまり

$feed['object'] == $item['object']失敗した場合

($feed['time']-$item['time'] < FEED_TIME)評価されません。

失敗しcond2てもPHPが評価するようです。cond1

PHP で && が実際にどのように機能するか説明できますか。

ベンチマーク

上記のコードでは、約 61000 時間実行されます。Web サイト全体の実行に 27 秒かかります。

ネストされた条件では、約 10000 回の実行condtion2

$feeds$filtered392 エントリである約 1700 エントリです。

ありがとう

4

1 に答える 1