最適化 リファクタリング

2004年9月2日

プログラムのパフォーマンス向上のための変更を行った場合、リファクタリングといえるでしょうか?

私は、最適化とリファクタリングは多くの場合同じ変換を使用するとしても、2つの異なるものだと考えています。プログラムに行った特定の変換は、その両方に当てはまる場合もあります。

私がそれらを異なるものとみなす理由は、それらには目的が異なるからです。コードの理解を容易にするためにリファクタリングを行い、高速化するために最適化を行います。可変の導入はどちらの目的でも可能ですが、それを行う方法によっては、どちらか一方を主に実行しています。リファクタリングを行う場合、コードをより明確にすることを考えています。その成功に関する判断は、変更がプログラムの理解を容易にするかどうかという(主観的な)評価に基づいています。最適化を行う場合、パフォーマンスについて考えています。最適化によって実際のパフォーマンスが向上したことを確認するために、変更の前後のプロファイラを使用する必要があります。パフォーマンスが重要な状況では、環境(コンパイラ、VMなど)が後で変更されたときにその有効性を再テストできるように、変更のログを保持する必要があります。

そのため、最適化とリファクタリングは似ており、多くの変換を共有しますが、目的が異なるため、私はそれらを別のものとみなしています。