Javaは、スキルとコードの最適化をコーディング

ここから仕上げリファレンスhttps://mp.weixin.qq.com/s/-u6ytFRp-ZAqdLBsMmuDMw

ポイントについては、この記事で詳細を見るに行くことができます。この記事で疑問を持っています

定数&変数

  • 直接割り当て定数値は、のような、新たなオブジェクトを宣言禁止しますLong i = new Long(1L);

  • メンバ変数の値場合に変更せずに可能な限りのような時間は、として定義される静的定数

  • 基本データ型を使用するには、自動ボクシングとアンボクシングを避けます

  • 変数がします場合によってカバーされ初期値を指定必要はありません

  • 利用するようにする機能の一時的な変数の基本タイプ

    • 関数内で基本的なタイプのパラメータや一時変数のが中に保存されているスタック、アクセスが高速ですObject型スタックに格納されている一時的な変数やパラメータや参照の、と内容がスタックに格納され、アクセス速度が遅いです

    • クラスでは任意のタイプのメンバ変数は、に格納されているヒープ

  • 体外循環中の変数を定義しないようにしよう、回避が長く、大きなオブジェクトのライフサイクルを結果として遅れの回復に関する問題

  • 静的メンバ変数の定数と不変、非スレッドセーフなクラスを使用してみてください

オブジェクト&クラス

  • 変換JSONの使用は禁止オブジェクト、マニュアルパッケージは、オブジェクトを変換する必要があります

    • JSON文字列は、オブジェクトに変換を達成することができる対応するオブジェクトに変換されるが、パフォーマンスの問題があります

  • で使用しないようにしてください反射割り当てが発生します、オブジェクト、パフォーマンスの低下を、このようなVOに割り当てられたDTO値として、

  • 使用して匿名内部クラスラムダ式を最もラムダ式で仮想マシン使用しているため、invokedynamicの指示に、そして効率が匿名内部クラスよりも高くなります

  • しようとするサブクラスを不要に定義避けるため、我々はより多くのクラスローダのもう一つのクラスが必要です

  • 可能指定したクラスとメソッドfinal修飾子を

    • Javaコンパイラは、すべてで50%、平均でパフォーマンスを向上させるために最適化された特定のJavaランタイムを参照する最後の機会を内側になります

方法

  • 静的メソッドとは無関係メソッド宣言とクラスメンバ変数

  • メイク用基本データ型としてパラメータの型と戻り値の型、回避するために、不要な梱包・開梱NULLポインタ解析を

  • プロトコルのプログラミング方法とプロトコルパラメータの値は、非ヌル値を返します

  • 過剰宣告空の処理を避けます

  • 不要なパッケージング機能避け、より多くのCPUとメモリ消費にリードをプッシュしてポップによって引き起こされるメソッド呼び出し音量を、しかし、コードの簡潔かつ明快にするために特定の方法を増やすことは価値があります

  • 繰り返し呼び出しを削減

    •  用(INT I = 0、userLength = 。USERLIST サイズ(); I < userLength; I ++){ 
          ...
       }
  • 避けるようにしてください、不要なメソッド呼び出しを、実際には、避けることの出現方法および譲受人結果を呼び出すことが、価値が果たすべき役割が割り当てられていない、それが覆われていた起こってから

  • 使用してみてくださいシフトをするのではなく、正の整数の乗算や除算

  • 解凍共通式を

  • 試してみてください条件式に少なくしている!否定を使用

  • 場合は上記の5つの支店Switchステートメントがあるというそうでない場合よりも、より効率的な

  • 一致する正規表現を使用しないようにしてください

  • 自然な高効率を探し、一致し、固定長の文字ので、文字列置換を使用してみてください

  • 使用StringBuilderの文字列スプライシング

  • 文字列変換を使用して実行されるString.valueOf

配列

  • 使用System.arraycopyのは配列をコピーします

  • 遠く可能着信限り、タイプTの配列に設定した場合、空の配列T [0]

  • セットに変換されたオブジェクトの配列、使用しようとするのtoArray()メソッドのtoArray(新しいオブジェクト[0])の代わりに

セット

  • 初期化は、拡張の数を減らす、可能として指定されたサイズを設定します

  • 使用しようとのaddAllを()バッチをコピーします

  • 使用Arrays.adListは()配列リストに変換します

  • 直接反復は、コレクションを使用する必要があります

  • エンプティ検出()メソッドのサイズを使用しないことにより、のisEmptyのいくつかのための検出方法は、メソッド・サイズを実現時間複雑度はO(N)であってもよいです

  • 使用してみてください反復トラバーサルをget()は、ループのためにするのではなく、

  • 使用してみてくださいHashSetの現在決意値を

  • 避けて最初の再取得が存在することを決定し、それがされますので、二次ルック引き起こし、直接アクセスはその後、空気かどうかを判断します

異常な

  • ダイレクトキャプチャーさまざまな例外ではなく、instanceofはより

  • サイクルにおける避け取り込み、サイクル効率が向上し、キャプチャすることができ試験管

  • ビジネスプロセスの異常なコントロールの使用を禁止するような異常なリターンの偽を投げて、

バッファ

  • してください同じバッファを再利用します

  • 使用した緩衝液流動IOオペレーションを低減します

スレッド

  • シングルスレッド、使用しようとする非スレッドセーフなクラスを

  • マルチスレッド、使用してみスレッドセーフなクラスを

  • 可能な限り同期コードブロックの範囲を減少させます

  • 可能同じ同期コードブロックにまとめ

  • 使用してみてくださいスレッドプールのスレッドのオーバーヘッドを減らすために

おすすめ

転載: www.cnblogs.com/aukocharlie/p/11962835.html