5

の流れを制御するために等しい!=場合対の同一!==場合、これはおそらく答えるために痛いほど基本的な質問ですが、私はPHPのを使用してに関するパフォーマンスの問題に疑問を抱いています。それはを採用することが好ましい、

<?php 
function test_json($json = NULL) { 
    if ($json != NULL) { 
    echo 'You passed some JSON.'; 
    } else { 
    echo 'You failed to pass any JSON.'; 
    } 
} 
?> 

パフォーマンスの観点から、もし同じ!==)有効な比較を見つけようと、変数の型を反復PHPを防ぐために:

は、以下の些細なPHP関数を考えてみましょうか?

私は最初は、変数の型を比較し、それが失敗した場合、それはすぐにFALSEを返す!==ことを前提としてい? 私はをPHP3以来ほとんど反射として使用してきました。今では計算量の多いプロジェクトをいくつか進めているので、わずかなパフォーマンスの問題がさらに懸念されています。

フロー制御の最適化に関するその他のコメントはもちろん歓迎です!

+1

パフォーマンスに関する考慮事項が本当に問題になる場合は、プロファイリングもお試しください。それは関数呼び出しと比較して重要ではありません。 – mario

+0

@marioはい。私は関数を書く(私の習慣に疑問を呈しています)の間、概念が思い浮かぶように比較演算子について興味があります。 – msanford

答えて

7

私は、厳密な比較演算子対緩い上の任意のパフォーマンステストを行っていない、しかし、あなたがやろうとしているもののために、私が代わりにhttp://www.php.net/manual/en/function.is-null.php

is_null()

if (!is_null($json)) { 
    do_stuff() 
} 

詳しい情報のようなものをお勧めします

EDIT:上記のリンク先のPHPページのコメントには、よりも速い演算子よりも、===演算子が少し速いという結果がいくつかあります。しかし、もう一つの注意点は、 "=== NULLとis_nullの実行時間差は250ナノ秒未満です。重要なものを最適化してください。"私はそこに同意する必要があります。だからこそ、私は、あなたが最も読みやすいと思われるものに行くことをお勧めします。

+1

+1、ループを1 000 000比較してテストを実行し、値をNULLと比較します。 ; '=='、 '=='、 '==='、 'is_null()'のように、 '=='と '==='時間が約2倍かかる。しかし、個人的な好みの問題として、私は 'is_null()'を好むわけではなく、 'NULL == NULL'はfalse(*ではありません)でなければなりません。' is_null() – zrvan

+0

'NULL == NULL'に関する優れた点。私は、この正確な理由で可能な限り言語に含まれる関数の面で誤りを犯す傾向があります。私は決して考えなかった奇妙なコーナーケースを適切に処理する可能性が高いため、後でデバッグする必要がありません。 –

+0

素晴らしい点。みんな、ありがとう! – msanford

関連する問題