性能評価・プロファイリング

サンプリング方式のプロファイラの特徴として正しいものはどれか。

  1. Aすべての関数の出入りを1回も漏らさず記録する
  2. B一定の間隔でプログラムを割り込み、そのとき実行していた場所を記録して、多く記録された場所を時間を使っている場所とみなす
  3. Cプログラムのソースコードを読むだけで、実行はしない
答えと解説を見る

正解:B. 一定の間隔でプログラムを割り込み、そのとき実行していた場所を記録して、多く記録された場所を時間を使っている場所とみなす

サンプリング方式では、タイマや性能カウンタの割り込みで、例えば1秒に数千回、実行中の命令の場所(と呼び出しの連なり)を記録します。時間を多く使う場所ほど記録される回数が多くなるので、統計的にどこが重いかが分かります。プログラムを書き換えないので測定による遅れが小さく、実際に近い状態で測れますが、ごく短い処理の正確な回数などは分かりません。

  • A. それは計測(インストルメンテーション)方式です。
  • B. 正しい。測定の手間が小さいのが利点です。
  • C. 実行しながら測ります。
この分野を解く 分野ページへ

性能評価・プロファイリングのほかの問題

  1. 関数の入口と出口に時間を測るコードを入れて記録する計測(インストルメンテーション)方式のプロファイラについて正しいものはどれか。
  2. プログラムの性能の分析でいうホットスポットの説明として正しいものはどれか。
  3. プロファイルの結果を表すフレームグラフの読み方として正しいものはどれか。
  4. CPUに内蔵された性能カウンタ(PMU)で数えられるものの例として正しいものはどれか。
  5. 性能カウンタで測ったところ、あるプログラムのIPC(1サイクルあたりの命令数)が0.3と非常に低く、最後の段のキャッシュのミスが多かった。最も考えられる状況と対策の組み合わせはどれか。