スキップしてメイン コンテンツに移動

Javaのパフォーマンスチューニング

Jave Performance, 2nd Editionを読んでる。

performance testing: microbenchmarks, macrobenchmarks, and mesobenchmarks

3種類ある。
* Microでは測り方が大事。ウォームアップが必要。
* Macroではシステム全体のスループットが大事。RPSが高まらないと意味がない。
* Mesoは局所と全体の間。

Performance can be measured as throughput (RPS), elapsed time (batch time), or response time, and these three metrics are interrelated.

ウォームアップは必要だが、エンドユーザーからすると結局それは関係ない話。
二回目のアクセスではキャッシュされていて速いとしても一回目のアクセスが大事。
その点で、elapsed timeでの測定が大事。

スループットを測るときはクライアントのスペックが大事になる。
クライアント側のスペックがパフォーマンス測定のボトルネックになったりする。

レスポンスタイムで見るなら、できればワンショットではなく、アベレージと1%%の結果も見る。
でないとパフォーマンス全体の中での見落としにつながる。

簡単なパフォーマンステストにはFabanがおすすめ

テスト結果を見るときはt検定で有意な差があるかを確認する

Microベンチマークにはjmhを使用すると良い