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

1回あたり20 nsで終わる関数fが、何百万回も呼ばれる。これを、関数の入口と出口に記録の処理を入れる計測方式のプロファイラで測る。記録の処理に1回の呼び出しあたり合わせて60 nsかかり、その時間がすべてfの時間に数えられるとすると、計測されるfの時間は本来の何倍になるか。

  1. A3倍
  2. B4倍
  3. C変わらない(1倍)
答えと解説を見る

正解:B. 4倍

計測されるfの1回あたりの時間は、本来の20 nsに記録の60 nsが加わって80 nsになり、80÷20 = 4倍です。このように、測るための仕組みが、測りたいものの動きそのものを変えてしまう現象をプローブ効果といいます。記録の処理はキャッシュの中身も入れ替えるので、実際にはさらに遅くなることもあります。小さな関数が多いプログラムでは、時間の割合をサンプリング方式で測ったり、測定の手間そのものを差し引いて考えたりします。

  • A. 記録の60 nsを本来の20 nsで割った値(60÷20 = 3)と取り違えています。
  • B. 正しい。(20+60)÷20 = 4倍です。
  • C. 記録の処理にも時間がかかるので、計測される時間は長くなります。
この分野を解く 分野ページへ

関連する計算ツール

性能評価・プロファイリングの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

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

  1. プログラムのCPUでの実行時間を表す基本の式として正しいものはどれか。
  2. 10億個の命令を実行するプログラムを、平均CPIが2、クロック周波数が2 GHzのCPUで実行した。実行時間はいくらか。
  3. CPUの設計の変更で、クロックの周波数は1.5倍になったが、CPIも1.2倍に増えた(命令数は同じ)。実行の速さは元の何倍になるか。
  4. コンパイラの新しい最適化で、実行する命令の数は20%減ったが、平均CPIが10%増えた(周波数は同じ)。この最適化の効果として正しいものはどれか。
  5. あるプログラムの命令の割合が、整数の演算50%(CPI 1)、ロードとストア30%(CPI 2)、分岐20%(CPI 5)だった。平均CPIはいくらか。

この分野の比較