性能評価・プロファイリング
サンプリング方式のプロファイラの特徴として正しいものはどれか。
- Aすべての関数の出入りを1回も漏らさず記録する
- B一定の間隔でプログラムを割り込み、そのとき実行していた場所を記録して、多く記録された場所を時間を使っている場所とみなす
- Cプログラムのソースコードを読むだけで、実行はしない
答えと解説を見る
正解:B. 一定の間隔でプログラムを割り込み、そのとき実行していた場所を記録して、多く記録された場所を時間を使っている場所とみなす
サンプリング方式では、タイマや性能カウンタの割り込みで、例えば1秒に数千回、実行中の命令の場所(と呼び出しの連なり)を記録します。時間を多く使う場所ほど記録される回数が多くなるので、統計的にどこが重いかが分かります。プログラムを書き換えないので測定による遅れが小さく、実際に近い状態で測れますが、ごく短い処理の正確な回数などは分かりません。
- A. それは計測(インストルメンテーション)方式です。
- B. 正しい。測定の手間が小さいのが利点です。
- C. 実行しながら測ります。