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

プログラムの性能を改善するときの進め方として最も適切なものはどれか。

  1. Aまず測定して時間を使っている場所を見つけ、そこを改善し、改善した後にもう一度測って効果を確かめる
  2. B遅そうな場所を推測して、測らずに書き換える
  3. Cすべての関数を同じだけ最適化する
答えと解説を見る

正解:A. まず測定して時間を使っている場所を見つけ、そこを改善し、改善した後にもう一度測って効果を確かめる

どこが遅いかの推測は、経験のある人でもよく外れます。まずプロファイラや性能カウンタで測り、時間を多く使っている場所と、その原因(計算、メモリ、分岐、入出力など)を突き止めます。改善を加えたら、もう一度同じ条件で測って、本当に速くなったか、ほかの部分が遅くなっていないかを確かめます。この繰り返しが、確実に性能を上げる方法です。

  • A. 正しい。測定、改善、確認を繰り返します。
  • B. 推測は外れることが多いです。
  • C. 時間を使っていない部分の最適化は効果がありません。
この分野を解く 分野ページへ

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

  1. 大量のデータを処理するプログラムで、最も大きな速度向上が得られる可能性が高い改善はどれか。
  2. ソフトウェアの開発で、変更のたびにベンチマークを自動で実行して結果を記録しておく目的として正しいものはどれか。
  3. ノートパソコンでベンチマークを測ったところ、同じプログラムでも結果が毎回大きくばらついた。CPUの側の原因として考えられるものと、その対策の組み合わせとして正しいものはどれか。
  4. マルチコアやNUMAのシステムで性能を測るとき、スレッドを特定のコアに固定する(アフィニティを設定する)ことがある理由として正しいものはどれか。
  5. GPUを使うプログラムの性能を分析するとき、最初に確かめるべきこととして最も適切なものはどれか。