性能評価・プロファイリング
プログラムが遅いのに、CPUの使用率が20%程度と低かった。最も考えられる原因はどれか。
- ACPUの計算が速すぎる
- Bプログラムの命令の数が少なすぎる
- Cディスクやネットワークの入出力の待ちや、ロックの待ちなどで、CPUを使わずに待っている時間が長い
答えと解説を見る
正解:C. ディスクやネットワークの入出力の待ちや、ロックの待ちなどで、CPUを使わずに待っている時間が長い
CPUの使用率が低いのにプログラムが遅いなら、時間の大部分はCPUの外の何かを待っていると考えられます。ディスクの読み書き、ネットワークの応答、ほかのスレッドが持つロックの解放などです。この場合、CPUを速くしても、計算のコードを最適化しても効果はほとんどありません。入出力をまとめる、非同期にして待ちの間にほかの処理を進める、ロックの範囲を小さくする、などが有効です。
- A. 速すぎることが遅さの原因にはなりません。
- B. 命令が少ないことは遅さの原因になりません。
- C. 正しい。CPUを速くしても解決しません。