Javaの最適化コードのパフォーマンス最適化の研究では、-javaを締結しました

どんな小さな最適化は、大躍進のパフォーマンスまで追加;
逆に、すべての不注意なコードが、それはおそらく、災害のメンテナンスを蓄積します。

Javaの最適化、またはそれにローカルな注意を払うに値するとは何ですか?

1.「System.arraycopyの()」の代わりの複製は、アレイを介して循環される
はるかに高速サイクルを複製するよりも、配列を「System.arraycopyの()」

2.代わりに、乗算と除算(時間の2のべき乗)のシフト動作(ビット演算子)を使用して
高効率でシフト演算子

シンクブロック少ない3.同期、同期方法で可能な
同期キーワードは、プロセスレベル(粗粒ロック)またはコード・ブロック・レベル(きめ細かいロッキング)にも適用することができます。それはそうでない場合は、全体の方法を同期させるために必要な決定同期ブロックを利用することができない限り、同期コードの同期を必要としないものを避けるためにも、コード実行の効率に影響を与えました。

文字列定数4.は、代わりに「のStringBuffer」の「文字列」で
のStringBuffer文字列を置換するには、この文字列は、それがパフォーマンスを向上させるために、運用コストを削減するであろう、変更されることはありませんかどうかが決定されます。

5.コンテンツの長さは、初期長さを指定するためのツール、アレイ状のボトムセットに追加されると推定できる場合、
そのようなArrayListの、LinkedLlist、のStringBuilder、StringBufferの、 HashMapの、HashSetの好き。
例えば:StringBufferのコンストラクタは、文字の配列のデフォルトのサイズ(通常は16)を作成します。あなたがこのサイズを超えた場合の使用では、それは、メモリを再割り当て、より大きなアレイを作成し、元の配列をコピーし、古い配列を破棄します。StringBufferを作成するときにほとんどの場合、あなたはこのように容量の自動増加を回避すると、パフォーマンスを改善するのに十分な時間ではありません、サイズを指定することができます。

6.指定されたクラスを試してみて、最終工程修飾子
最終修飾子クラスでは導出されません。JavaコアAPIでは、java.lang.Stringなど、最終的なアプリケーションの多くの例があり、クラス全体は、最終あります。クラスのための最終的な修飾子を指定したクラスをオーバーライドすることはできません、最終的な修飾法を作る方法として指定し、継承することはできませんことができます。最終としてクラスならば、すべてのメソッドのクラスは最終的なものです。Javaコンパイラは、すべてのメソッドはJavaの運用効率を向上させるためのインライン重要な役割を持つ最終以内の機会を探して、特定のJavaランタイムの最適化を参照します。これは50%の平均によって性能を向上させることができます。

7.文字列スプライシングのStringBufferは
同じ文字列、文字列定数プールの使用が作成されていない場合は、Stringオブジェクトの使用に注意してください、これは非常に資源集約的です。文字列が接続されている場合には、そのためのStringBuilder / StringBufferの場所を使用する必要があります

8とローカル変数の使用
方法を呼び出すときに渡されたパラメータとは、一時的な変数がヒープに作成され、より高速にコールスタックに等静的変数、インスタンス変数、のような他の変数を、記憶されている作成し、スロー。また、操作の方法で作成したスタック変数は、コンテンツがなくなって、追加のガベージコレクションを完了していません。

9.プーリング、データベース接続プーリングとスレッドを使用し
、再利用のためのオブジェクトです、前者は頻繁に開閉接続を避けることができる2つのプールを頻繁にスレッドを作成し、破壊を避けることができました

.toStringを使用して文字列に10の基本データ型()方法
.toString基本データ型()「」データ+、続いて、最も遅いString.valueOf(データ)最速の方法であります

クローズ()の11リソースが別々の操作をお勧めします
など。

try{
XXX.close();
YYY.close();
}catch (Exception e)
{
...
}

に変更することができます。

try{ XXX.close(); }catch (Exception e) { ... }try{ YYY.close(); }catch (Exception e) { ... }

いくつかのトラブルもののので、しかし、あなたは、リソースのリークを回避することができます。私たちは、このリソースがするまで回復できないだろうYYY、コードを変更しない場合場合XXX.close(には、希望)例外をスローし、その後、カテーテル検査でブロックに入ったYYY.close()が実行されることはありませんこのようなコードで複数のです占有、リソースハンドルリークが発生する可能性があります。しかし、以下の文言を変更することは後に、私たちはどのような場合にはXXXこととYYYクローズアウトすることを確認してください。

パートナーは、ちょっといい右上賞賛または注意ヨーヨー感じるかもしれません!

おすすめ

転載: blog.csdn.net/fallwind_of_july/article/details/93628214