PHP の if/else 実装メカニズム

WBOY
リリース: 2016-06-13 13:09:43
オリジナル
978 人が閲覧しました

PHP
の if/else 実行メカニズムは次のとおりです。PHP でのテストでは、if 分岐は 2.9 秒遅く、else 分岐は 2.2 秒速くなります。if 条件は 1==1 および 1! です。 =1の変形ですが、これはどのようなメカニズムで起こるのでしょうか?

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
    $stime=microtime(true); //获取程序开始执行的时间
    $j=0;
  for($i=0;$i<5000000;$i++){
    if(1!=1){
        $j++;
    }else
        $j++;
  }

    $etime=microtime(true);//获取程序执行结束的时间
    $total=$etime-$stime;   //计算差值
    $str_total = var_export($total, TRUE);
    if(substr_count($str_total,"E")){
        $float_total = floatval(substr($str_total,5));
        $total = $float_total/100000;
    }
    echo "$total".'秒';

ログイン後にコピー


------解決策------ -
テストしましたが、あなたが言ったことと違います。
PHP コード
/*もし
0.55976009368896 秒
0.55944108963013秒
0.56911516189575秒
0.5602080821991秒
0.56702303886414秒
それ以外
0.5650839805603秒
0.56633019447327秒
0.56741714477539 秒
0.56370115280151秒
0.56349802017212秒
*/
<br><font color="#e78608">------解決策----------------------</font><br>if else の実行効率の違いは、 ifコードブロック そしてelseコードブロック内のコードの実行効率ですよね? <br>ここにある 2 つのコードは同じであり、実行時間はほぼ同じであるはずです。
<br><font color="#e78608">------解決策----------------------</font><br> は中かっこが原因であり、PHP コードはここで見ている数行については、PHP は最終的に C で実行されるため、すべてのシンボルと行は C で変換および解釈される必要があります。
<br><font color="#e78608">------解決策------------------</font><br>そのような質問には、変人が答えるべきです。 .<br><br>
ログイン後にコピー
Discussion

php は C を実行しますが、すべての C 最適化ソリューションを適用できますか?しかし、変換には時間がかかります。パフォーマンスを総合的に測定し、パフォーマンス向上の突破口を見つけるにはどうすればよいですか?

------解決策---------
if は判断する必要があるため、else は判断する必要がないからです。判断するには、Try else if を実行して確認します。遅くなりますが、== と != は単なる 0 と 1 であり、違いはありません。

言語内の if...else ステートメントの設計がパフォーマンス上の問題になる場合、その言語は放棄される可能性があります。
------解決策---------
話し合う

php は C を実行しますが、すべての C 最適化ソリューションを適用できますか?しかし、変換には時間がかかります。パフォーマンスを総合的に測定し、パフォーマンス向上の突破口を見つけるにはどうすればよいですか?

------解決策---------
if ブロックと else ブロックの実行コードは同じです。効率は同等です。
------解決策---------
話し合う

if ブロックと else ブロックの実行コードは同等であり、効率も同等です。

------解決策---------
話し合う

引用:

if は判断する必要がありますが、else は判断する必要がないため、else if を試して確認することができます。遅くなりますし、== と != は単なる 0 ではありません。と1、違いはありません。

言語内の if...else ステートメントの設計がパフォーマンス上の問題になる場合、その言語は放棄される可能性があります。


最初は細かい点で苦労しましたが、パフォーマンスの最適化が少し弱いように感じます。パフォーマンスの最適化を行う場合、どこから始めればよいでしょうか。
……

------解決策---------
続けてさらに学習してください
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート