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

関数の入口と出口に時間を測るコードを入れて記録する計測(インストルメンテーション)方式のプロファイラについて正しいものはどれか。

  1. A記録の処理には時間がまったくかからない
  2. B呼ばれた回数などを正確に記録できるが、記録の処理そのものが時間を使い、特に小さな関数の多いプログラムでは結果がゆがむことがある
  3. C関数の入口と出口は、どのプログラムにも存在しない
答えと解説を見る

正解:B. 呼ばれた回数などを正確に記録できるが、記録の処理そのものが時間を使い、特に小さな関数の多いプログラムでは結果がゆがむことがある

計測方式では、すべての関数の呼び出しを記録するので、回数や呼び出しの関係を漏れなく正確に知ることができます。しかし、記録のための処理が関数の呼び出しのたびに加わるので、小さな関数が非常に多く呼ばれるプログラムでは、記録の時間が本来の処理の時間を上回ることもあります。そのため、時間の割合はサンプリング方式で、正確な回数は計測方式で、と使い分けます。

  • A. 記録のための命令が実行されるので、時間がかかります。
  • B. 正しい。測ることで測る対象が変わってしまう例です。
  • C. 関数には必ず入口と出口があります。
この分野を解く 分野ページへ

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

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