1

サイクルまたは反復ステートメントのコストを知る方法があることは知っていますが、2 つのことを知りたいです。

1位。 これら 2 つのリストのうち、費用対効果が高いのはどれですか? (または、より良いアプローチがあれば、私はすべて耳を傾けています):

更新:質問は次のとおりです: 2 つのうちどれがメモリ/GC を適切に使用しますか? と の「値」はreqObjresObj次のループでは必要ないことに注意してください。

for (TransactionLog transactionLog : transactionLogList) {
 RequestObj reqObj = new RequestObj();
 ResponseObj resObj;
 try {

  //do things with these 2 babes and the transactionLog

 } catch (WhateverException ex) {
  log.error("Error in XYZ while doing whatever", ex);
  //execute code without throwing anything up
 } finally {
  reqObj = null;
  resObj = null;
 }
}

また

RequestObj reqObj = new RequestObj();
ResponseObj resObj;
for (TransactionLog transactionLog : transactionLogList) {
 try {
  //do things with these 2 babes and the transactionLog

 } catch (WhateverException ex) {
  log.error("Error in XYZ while doing whatever", ex);
  //execute code without throwing anything up
 } finally {
  //do something
 }
}

そして2番目。 この「アルゴリズムのベストプラクティス」と、相互関係のステートメントコストを計算するための関数 O(letter) を学ぶのに適した場所/本/サイトをどこで見つけることができますか?

PD: 私の英語で申し訳ありません... 彼はあまり格好良くありません. xD

4

2 に答える 2

0

ローカル オブジェクトはより明確で、エラーが発生しにくく、そのようなオブジェクトはガベージ コレクターによって適切に処理されます。StringBuilder のような再利用可能なオブジェクトの場合、新しい StringBuilder を実行する代わりに、すべてのサイクルでクリアできます。

null への設定が初心者の署名であるように。

于 2013-02-21T16:53:45.630 に答える
-1

RequestObjとがそうでResponseObjある(AutoCloseableまたはそのように実装している) 場合は、Java 7 で利用可能なtry-with-resourcesブロックの使用を検討する必要があります。finallyの追加のキャッチ、さらに言えfinallyば、これらの例外は抑制されます)。

try( RequestObj reqObj = new RequestObj(); ResponseObj resObj = ... ) {
  // Do stuff

} catch (WhateverException ex) {
  log.error("Error in XYZ while doing whatever", ex);
  // execute code without throwing anything up
} 

// No finally block required

あなたのケースでは時期尚早の最適化のように思われるので、GC/メモリの問題について心配する必要はありません。コードをクリーンで読みやすいものにしておくことをお勧めします。

詳細: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

于 2013-02-21T18:05:41.337 に答える