性能評価・プロファイリング
プログラムの実行時間を測るとき、同じ測定を何回も繰り返し、最初の数回の結果を除くことが多い理由として正しいものはどれか。
- A最初の数回は、計算の結果が必ず間違うから
- B最初はキャッシュが空だったり、ファイルの読み込みや実行時のコンパイルが行われたりして遅く、測定のばらつきもあるから
- C同じ測定を繰り返すと、CPUが速くなる回路を作るから
答えと解説を見る
正解:B. 最初はキャッシュが空だったり、ファイルの読み込みや実行時のコンパイルが行われたりして遅く、測定のばらつきもあるから
最初の実行では、キャッシュやTLB、分岐予測器が空の状態から始まり、ファイルがOSのキャッシュになくディスクから読む必要があり、JITコンパイラを使う言語では機械語への変換も行われます。そのため最初の数回は遅くなります。また、他のプログラムや割り込み、温度による周波数の変化などで測定はばらつくので、何回も測って平均や中央値、ばらつきの大きさを示すことが大切です。
- A. 結果は正しく、時間が違うだけです。
- B. 正しい。ウォームアップと呼ばれます。
- C. 回路が変わることはありません。