これは私の最初の質問です。
私はphpスクリプトでいくつかの最適化を行っており、実行速度を向上させています...
間 :
$datas = array();
$datas['file_import'] = $file_name_reporting;
と :
unset($datas);
$datas['file_import'] = $file_name_reporting;
誰かがどちらが速いか教えてもらえますか?
ありがとうございました
これは私の最初の質問です。
私はphpスクリプトでいくつかの最適化を行っており、実行速度を向上させています...
間 :
$datas = array();
$datas['file_import'] = $file_name_reporting;
と :
unset($datas);
$datas['file_import'] = $file_name_reporting;
誰かがどちらが速いか教えてもらえますか?
ありがとうございました
2 番目の例では警告が発生します。これ$datas
は、現在null
、配列として扱っているため、前に空の配列として宣言する必要があるためです。
したがって、最初の例に従ってください。空の配列を割り当ててから、データを入れてください。
array() は配列を作成しますが、unset() は変数を破棄します。
最初の方法は単なる上書きだと思いますが、2番目の方法には、削除、存在の確認、警告のトリガー、新しい配列の作成が含まれます
どちらかの形式が他方よりも「速い」と主張するのはばかげています。どちらのバージョンも非常に高速に実行されるため、おそらく違いに気付くには、ループ内で何百万回も実行する必要があります。実際にスクリプト内でそれを行っていますか? そうでない場合は、ここで「最適化」を忘れてください (実際、経験豊富な開発者が言うように、「目で見て」すべての最適化を忘れることをお勧めします)。
その上、2 つのバージョンは実際には異なることを行います。つまり、sumbol テーブルからunset
名前が削除さ$datas
れます (配列に値を追加しようとすると、次の行に通知が表示されます)。
適切と思われるものを使用し、重いループの内部を調べて、最適化するものを見つけてください。
どちらの場合も、新しい配列が構築されます。PHPで変数の設定を解除すると、その値がnullに設定され、次の行で配列コンストラクターが呼び出されるだけです。私はnittlに同意しますが、私の提案は次のとおりです。
$datas = array('file_import' => $file_name_reporting);
新しい配列を作成すると、変数が自動的に「設定解除」され、配列コンストラクターに値を渡すことで、必要な値で配列を埋めることができます。
明示的に配列を作成し、データの一部を追加するという 2 つの操作のみを行うため、明らかに最初のコードの方が高速に動作します。2 番目の例では、変数を破棄してから再度使用しようとするため、警告が発生します。
さらにunset
、使用済みメモリは解放されず、変数のポインターのみが解放されます。gc が実行されると、メモリが解放されます。メモリを解放するには、$datas = null;
代わりに使用します。