6

これはおそらく答えるのが難しい基本的な質問ですが、PHPを使用する場合のパフォーマンスの問題について、制御フローと同じである かどうかについて疑問に思っています。!== !=

次の簡単なPHP関数について考えてみます。

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

パフォーマンスの観点から、PHPが変数型を反復処理して有効な比較を見つけようとするのを防ぐために、同一の場合( )を使用することが望ましいですか?!==

最初に変数タイプを比較し、それが失敗した場合、すぐに?を返すと仮定します。私はPHP3以来ほとんど反射神経として使用してきました。計算量の多いプロジェクトに取り組んでいるので、パフォーマンスに関する詳細な考慮事項がより重要になります。!== FALSE!=

もちろん、フロー制御の最適化に関する他のコメントも歓迎します。

4

2 に答える 2

8

緩い比較演算子と厳密な比較演算子のパフォーマンステストは行っていませんが、あなたがやろうとしていることについては、代わりに次のようなことをお勧めします

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

詳細についてはis_null()http://www.php.net/manual/en/function.is-null.phpを参照してください。

編集: 上記でリンクした php ページのコメントのメモには、演算子が演算子===よりもわずかに高速であることを示すいくつかの結果==があり、どちらもis_null(). ただし、別のメモでは、「===NULL と is_null の実行時間の差は 250 ナノ秒未満です。重要なものを最適化してください。」と指摘されています。そこは同意せざるを得ない。とはいえ、最も読みやすいと思われるものを使用することをお勧めします。

于 2012-01-16T22:41:29.880 に答える
-1

質問する前に、このようなテスト コードを書くことができます。テストによると、「「===」を使用すると、is_null() よりも 30 倍高速です。

http://www.php.net/manual/en/language.types.null.php#77937

于 2012-01-16T22:50:56.983 に答える