37

Java 低遅延アプリケーションの包括的なチェックリストを作成したいと思います。ここにチェックリストを追加できますか?

これが私のリスト
です 1. オブジェクトを不変にします
2. 同期メソッドを削減してみてください
3. ロックの順序は十分に文書化され、慎重に処理する必要があります
4. プロファイラー
を使用します 5. アムダルの法則を使用し、順次実行パスを見つけます
6. Java 5 を使用します
スレッドの優先順位はプラットフォームに依存するため避ける
8. JVM ウォームアップを使用できる
9. 不公平なロック戦略を優先する
10. コンテキスト切り替えを避ける (多くのスレッドは生産性を低下させる)
11. ボックス化、ボックス化解除を避ける
12. コンパイラの警告に注意して
ください 13. スレッド数はコア数以下にする必要があります

低遅延アプリケーションは、ミリ秒ごとに調整されます。

4

12 に答える 12

8

不変性は良いことですが、必ずしもレイテンシが改善されるわけではありません。低レイテンシーの確保は、プラットフォームに依存する可能性があります。

一般的なパフォーマンス以外に、GC のチューニングは非常に重要です。メモリ使用量を減らすと、GC に役立ちます。特に、移動する必要のある中年のオブジェクトの数を減らすことができる場合は、そのオブジェクトを長寿命または短寿命のいずれかに保ちます。また、パーマに触れるものは避けてください。

于 2010-04-04T14:36:35.703 に答える
6

ボックス化/ボックス化解除を避け、可能であればプリミティブ変数を使用してください。

于 2010-04-06T06:56:49.580 に答える
5

メッセージ処理パスで可能な限りコンテキストの切り替えを回避する結果: NIO と単一のイベント ループ スレッド (リアクター) を使用する

于 2010-05-10T15:51:05.973 に答える
4

購入し、読んで、Effective Javaを理解し てください。オンラインでも利用可能

于 2010-04-04T14:10:58.970 に答える
3

測って、測って、測って。ベンチマークを定期的に実行するために、実稼働ハードウェアにできるだけ近い実際のデータを使用します。低レイテンシのアプリケーションはアプライアンスと見なされることが多いため、特定のメソッド/クラス/パッケージ/アプリケーション/JVM などだけでなく、展開されたボックス全体を考慮する必要があります。設定のような本番環境で現実的なベンチマークを構築しない場合、驚くべき結果が生じるでしょう。製造。

于 2013-01-06T13:36:35.473 に答える
1

基盤となるハードウェアのコアよりも多くのスレッドをアプリケーションでスケジュールしないでください。OS にはスレッドの実行が必要であり、場合によっては同じハードウェアを共有する他のサービスも必要になるため、アプリケーションは使用可能なコアの最大数よりも少ない数を使用する必要がある場合があることに注意してください。

于 2012-08-31T14:59:36.127 に答える
0

もう 1 つの重要なアイデアは、最初に機能させてからパフォーマンスを測定し、ボトルネックを特定して最適化し、再度測定して改善を確認することです。

Knuth が言ったように、「時期尚早の最適化は諸悪の根源です」。

于 2010-04-21T21:20:01.920 に答える
0

大きな文字列を生成するときStringBuilderの代わりに使用します。Stringたとえば、クエリ。

于 2010-04-04T14:06:21.323 に答える