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

大量のデータを処理するプログラムで、最も大きな速度向上が得られる可能性が高い改善はどれか。

  1. A変数の名前を短くする
  2. B計算量がn²のアルゴリズムを、n log nのアルゴリズムに変える
  3. Cコメントを削除する
答えと解説を見る

正解:B. 計算量がn²のアルゴリズムを、n log nのアルゴリズムに変える

データの数nが100万なら、n²は1兆、n log nは約2000万で、5万倍もの差があります。命令の細かな最適化やハードウェアの改善で得られる数倍の効果に比べ、アルゴリズムの改善は桁違いの効果を持つことがあります。性能の改善では、まず計算量の大きなアルゴリズムを使っていないかを確かめ、そのうえでキャッシュの使い方や並列化などの改善を重ねます。

  • A. 変数の名前は実行の速さに影響しません。
  • B. 正しい。データが多いほど差は桁違いになります。
  • C. コメントは実行の速さに影響しません。
この分野を解く 分野ページへ

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

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