性能評価・プロファイリング
大量のデータを処理するプログラムで、最も大きな速度向上が得られる可能性が高い改善はどれか。
- A変数の名前を短くする
- B計算量がn²のアルゴリズムを、n log nのアルゴリズムに変える
- Cコメントを削除する
答えと解説を見る
正解:B. 計算量がn²のアルゴリズムを、n log nのアルゴリズムに変える
データの数nが100万なら、n²は1兆、n log nは約2000万で、5万倍もの差があります。命令の細かな最適化やハードウェアの改善で得られる数倍の効果に比べ、アルゴリズムの改善は桁違いの効果を持つことがあります。性能の改善では、まず計算量の大きなアルゴリズムを使っていないかを確かめ、そのうえでキャッシュの使い方や並列化などの改善を重ねます。
- A. 変数の名前は実行の速さに影響しません。
- B. 正しい。データが多いほど差は桁違いになります。
- C. コメントは実行の速さに影響しません。