1

これは通常のスタックオーバーフローのこれまたはその方法の質問ではないと思いますが、おそらく誰かがこの質問に対するより良いアプローチを教えてくれるでしょう。

値に応じて異なる「エンジン」を継承し、すべてのエンジンに対して同じオブジェクトを返すインターフェイスを作成しました。これは、他の州の他のアプリケーションと統合されている短期間のフラットレンタルアプリケーションです。明らかにそれぞれに API があるため、アプリケーション内でそれぞれ異なる方法で送受信する方法を知っていなければなりません。すべての API のオブジェクト。私が正確に行うことは、このようなものを初期化することです。

$flat = new API(array('engine' => 'some_api')); // the array has some more information inside but it is unimportant for the question

これで、それぞれが異なる API 用の ID のリストができました。何かのようなもの

$list = array(1 => 'api_1', 2 => 'api_2'); // and more ...

それでは質問です!

APIオブジェクト内に可能なすべてのエンジンを保持し、IDごとに、APIオブジェクト内で初期化された「エンジン」をすでに持っている(すべて$listがすでに割り当てられいるため、おそらく速度/パフォーマンスが向上する)またはすべきforeach ID は、適切な「エンジン」のみを初期化して新しい API オブジェクトを作成します。(速度/パフォーマンスは低下しますが、メモリ管理は改善されるはずです)。

API オブジェクトは反復の範囲外では意味を持たないため、それを保持する必要はありませんが、2 つまたは 4 つのオブジェクトではなく 1 つのオブジェクトを開始するだけで、ガベージ コレクションのオーバーヘッドが全体的に少なくなる可能性があります。私が持っているIDの量のために。

何かご意見は?

4

1 に答える 1

4

オブジェクトの作成/解放には、それほど多くのメモリや時間がかかりません。何千もの API がない限り、心配する必要はありません。

サーバーへの接続、データベース接続の初期化、メタ情報のクエリ、ファイルの読み取りなど、外部 IO が関係している場合は、必要なときにのみ、できるだけ少なくする方が効率的ですが、オブジェクトの数はそれ自体はパフォーマンスに特に影響を与えません。

アドバイス: 最も読みやすく保守しやすい方法でコードを構成してください。もしそうなら、それはおそらく十分に効率的です。本当にボトルネックが見つかった場合にのみ、再構築を開始してください。

于 2013-01-02T13:37:23.837 に答える