最適化は計測から始める
速そうに見えるコードが実際に速いとは限りません。まず入力規模、実行環境、期待する性能を明確にし、計測でボトルネックを特定します。
計算量
入力サイズNに対して、処理回数がどのように増えるかを考えます。二重ループは典型的にO(N²)、一度ずつ走査する処理はO(N)になることがあります。
計測の観点
- 実行時間だけでなく、割り当て量やGC回数も確認する。
- Releaseビルドで測定し、複数回実行してばらつきを見る。
- ウォームアップやJITコンパイルの影響を考慮する。
- 代表的な入力だけでなく、最大規模の入力も測る。
改善の順序
アルゴリズムとデータ構造の選択を先に見直し、その後に割り当てや低レベルの最適化を検討します。読みやすさや保守性を大きく損なう変更は、測定結果で十分な効果が確認できる場合に限ります。