第5章 マイクロベンチマークと統計 マイクロベンチマークと統計
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、Javaの性能数値を直接測定する具体的な方法について考える。 JVMの動的な性質は、性能数値が多くの開発者が期待するよりも扱いにくいことが多いことを意味する。その結果、インターネット上には不正確な、あるいは誤解を招くような性能数値が多く出回っている。
本章の主な目的は、このような落とし穴の可能性を認識し、自分や他の人が信頼できるパ フォーマンス数値のみを作成するようにすることである。特に、Javaコードの小片の測定(マイクロベンチマーク)は、微妙で正しく行うのが難しいことで有名であり、このテーマとパフォーマンス・エンジニアによる適切な使い方は、この章を通しての主要なテーマである。
第一の原則は、自分自身を欺いてはならないということだ。
リチャード・ファインマン
章の第2部では、マイクロベンチマーキングツールの金字塔の使い方を説明する:JMHである。もし、警告や注意書きがあったとしても、あなたのアプリケーションやユースケースがマイクロベンチマークを使う価値があると思うのであれば、利用可能なツールの中で最も信頼性が高く、先進的なものから始めることで、よく知られている多くの落とし穴や「熊の罠」を避けることができる。
最後に、統計の話題に移ろう。JVMは日常的に、やや慎重な取り扱いを必要とするパフォーマンス・ナンバーを生成する。マイクロベンチマークによって生成される数値は、通常、特に敏感であるため、観察された結果をある程度統計的に精巧に扱うことが、パフォーマンス・エンジニアに課せられた義務である。この章の最後のセクションでは、JVM性能データを扱うためのテクニックと、データのインタプリタに関する問題について説明する。
Javaパフォーマンス測定入門
Javaパフォーマンス概要」では、パフォーマンス分析とは、基本的に実験的な科学である学問分野をもたらした、技術のさまざまな側面の総合であると説明した。
つまり、良いベンチマーク(またはマイクロベンチマーク)を書きたいのであれば、それを科学実験のように考えることは非常に役に立つ。
このアプローチは、ベンチマークを "ブラックボックス "と見なすことにつながる。ベンチマークには入力と出力があり、そこから推測や推論ができるデータを収集したいのである。しかし、慎重でなければならない-単にデータを収集するだけでは十分ではない。データに惑わされないようにする必要がある。
ベンチマークの数字はそれだけでは重要ではない。その数字からどのようなモデルを導き出すかが重要なのだ。
アレクセイ・シピルёフ
つまり、可能な限りシステムの1つの側面だけを変更し、ベンチマークに含まれるその他の外部要因を確実に制御することである。理想的な世界では、システムの他の変更可能な側面は、テスト間で完全に不変であるべきだが、実際にはそれほど幸運なことはめったにない。
注
科学的に純粋で公正なテストという目標が実際には達成できないとしても、少なくともベンチマークが再現可能であることは不可欠である。
Javaプラットフォーム用のベンチマークを書く際の中心的な問題の1つは、Javaランタイムの高度さである。本書のかなりの部分は、JVMによって開発者のコードに適用される自動最適化の説明に費やされている。このような最適化の文脈で、ベンチマークを科学的テストとして考えると、選択肢は限られてくる。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access