2

これは私の最初の質問です。

私はphpスクリプトでいくつかの最適化を行っており、実行速度を向上させています...

間 :

$datas = array();
$datas['file_import'] = $file_name_reporting;

と :

unset($datas);
$datas['file_import'] = $file_name_reporting;

誰かがどちらが速いか教えてもらえますか?

ありがとうございました

4

6 に答える 6

2

2 番目の例では警告が発生します。これ$datasは、現在null、配列として扱っているため、前に空の配列として宣言する必要があるためです。

したがって、最初の例に従ってください。空の配列を割り当ててから、データを入れてください。

于 2012-03-01T11:09:17.383 に答える
1

array() は配列を作成しますが、unset() は変数を破棄します。

于 2012-03-01T11:11:35.873 に答える
1

最初の方法は単なる上書きだと思いますが、2番目の方法には、削除、存在の確認、警告のトリガー、新しい配列の作成が含まれます

于 2012-03-01T11:13:29.110 に答える
1

どちらかの形式が他方よりも「速い」と主張するのはばかげています。どちらのバージョンも非常に高速に実行されるため、おそらく違いに気付くには、ループ内で何百万回も実行する必要があります。実際にスクリプト内でそれを行っていますか? そうでない場合は、ここで「最適化」を忘れてください (実際、経験豊富な開発者が言うように、「目で見て」すべての最適化を忘れることをお勧めします)。

その上、2 つのバージョンは実際には異なることを行います。つまり、sumbol テーブルからunset名前が削除さ$datasれます (配列に値を追加しようとすると、次の行に通知が表示されます)。

適切と思われるものを使用し、重いループの内部を調べて、最適化するものを見つけてください。

于 2012-03-01T11:13:55.317 に答える
1

どちらの場合も、新しい配列が構築されます。PHPで変数の設定を解除すると、その値がnullに設定され、次の行で配列コンストラクターが呼び出されるだけです。私はnittlに同意しますが、私の提案は次のとおりです。

$datas = array('file_import' => $file_name_reporting);

新しい配列を作成すると、変数が自動的に「設定解除」され、配列コンストラクターに値を渡すことで、必要な値で配列を埋めることができます。

于 2012-03-01T11:13:55.570 に答える
1

明示的に配列を作成し、データの一部を追加するという 2 つの操作のみを行うため、明らかに最初のコードの方が高速に動作します。2 番目の例では、変数を破棄してから再度使用しようとするため、警告が発生します。

さらにunset、使用済みメモリは解放されず、変数のポインターのみが解放されます。gc が実行されると、メモリが解放されます。メモリを解放するには、$datas = null;代わりに使用します。

于 2012-03-01T11:16:42.887 に答える