この質問に対する簡単な答えはありません。最適化とパフォーマンスは、特定のコードベース、コードベースが実行されているプラットフォーム、サーバーで実行されている他のコードベースなどに大きく依存します。
シナリオから始めるには、曖昧すぎて適切な答えを提供できません。しかし、以前のコメント/懸念のいくつかに触れるために...
PHPには、ガベージコレクションに関する明確に定義されたルールがありません。THEORYシナリオでは、ガベージコレクションのおかげで関数が終了すると、Aはメモリを解放します。実際には、これはめったに起こりません。ガベージコレクションがそのメモリを解放する原因となるトリガーは多数ありますが、舞台裏では、実際の低レベルのfree()とmallocs()はカットアンドドライではありません。メモリスタックを注意深く観察すると、関数が$ file1、$ file2、$file3のメモリスペースを終了した後も残っていることがわかります。アプリケーション全体が終了するまで時々。
アプリケーションの構築によって、どちらが高速であるかも判断され、$ file1、$ file2、$ file3のシンボルテーブルに新しいエントリが作成されるか、$fpが何度も再利用されます。$ fpを再利用することは、理論上、通常、メモリスペースを再割り当てする必要がなく、新しいシンボルテーブルエントリと対応する管理オブジェクトを再作成する必要がないことを意味します。ただし、これが常に当てはまるとは限りません。$ fpの再利用は、destroyを最初に呼び出してからオブジェクトを再作成する必要があるため、実際には遅くなる場合があります。場合によっては、反復プロセスで新しい$ file1、$ file2、$ file3を作成し、ガベージコレクションを一度に実行する方が速い場合があります。
だから、このすべての一番下の行....
自分の遊び場で物事がどのように動作するかを学ぶには、ネイティブ環境で自分のアプリを分析してテストする必要があります。「常にこれを行う」または「決してそれを行わない」シナリオになることはめったにありません。