短いサーキットの質問はすでに私が知っています。しかし、ここで機能しない理由を知りたいです。短絡は、並列処理またはパイプライン処理による影響がありますか。
コードで非常に奇妙な状況に直面しました。コードは次のようになります
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
$filtered
392 エントリである約 1700 エントリです。
ありがとう