10

私は毎秒数千のリクエストを受け取るシステムに取り組んでおり、基本的に回避しようとしているタスクの 1 つは、不要なオブジェクトや余分なオブジェクトを作成することです

6 つの要求項目ごとに着信要求を検証する必要があります。

各アイテムの検証ごとにクラスを作成することを考えています。

ただし、静的検証クラスとオブジェクトをHttpRequestインスタンス フィールドとして含むインスタンスを使用する必要があるかどうかを正当化しようとしています。

静的クラスまたはオブジェクトを使用する必要がありますか? あなたならどうしますか?

基本的に、私がやっていることはList<IValidator> validators、リクエスト ハンドラーに注入し、それを反復処理することです。インスタンスと静的クラスが必要かどうかはわかりません。

4

2 に答える 2

7

新しい Validator インスタンスの作成と静的メソッドの再利用がメモリに与える影響を実際に測定しましたか? 短命のオブジェクトを使用するコストは非常に小さいです。2 つのアプローチの違いを測定する必要があります。測定可能な違いがない場合は、コードがよりクリーンで理解しやすい方を使用してください。

このような場合、一方が他方よりも優れていると仮定するのではなく、違いを測定することは常に理にかなっています.

于 2012-08-28T18:28:00.867 に答える
1

マルチスレッド環境では、静的クラス/メソッドを使用すると、常に並行性の落とし穴が発生します。短命のオブジェクトの作成と収集は安価であるため、多くの場合、費用のかかるcuncurrencyの問題や余分な同期に遭遇するよりも、短命のオブジェクトを作成する方が適切です。

同様の理由で、 Strutsは静的リクエストハンドラーからインスタンスベースのリクエストハンドラーに切り替えました。

于 2012-08-28T18:45:41.443 に答える