プログラム最適化とは
プログラムの最適化とは、プログラムをより高速に実行したり、より少ないリソースを消費したり、一般に高レベルの効率で機能するようにコンピュータープログラムを変更するプロセスです。 最適化のタスクは、一部のプログラミング言語コンパイラによって自動的に、最適化プログラムを使用して意図的に、またはソースコードをステップスルーして特定の改善を試みるプログラマーによって手動で実行できます。 一般に、プログラムの最適化は特定の目的を念頭に置いて実行されます。これは、プログラムの他の部分の最適化状態を何らかの形で低下させない、プログラムに対して行うことができる一般的な最適化はほとんどないためです速度またはリソースの使用量に対して最適化されますが、通常は両方ではありません。 ある種の最適化で発生する可能性のある複雑な問題の1つは、多くの高レベルプログラミング言語がネイティブコードとコンピューター言語の間に非常に大きなレベルの抽象化を提供するため、すべての状況で、特にジャストインタイム(JIT)コンパイルを使用するインタープリター言語。
プログラム最適化の重要な概念は、最適化には通常何らかの価格が伴うという考え方です。 この一例は、コードの一部がより高速に実行されるように最適化されると、コードの可読性、メモリ使用量、プログラムの柔軟性、またはその他のコストを犠牲にして速度が向上する可能性があることです。 つまり、プログラムの最適化は、プログラムの1つの側面をより良い方法で動作させ、他の側面の効率を犠牲にすることを意図したターゲットプロセスでなければなりません。
プログラム開発のさまざまな段階で、さまざまなタイプのプログラム最適化を実行できます。 設計中に、プログラムが効果的に実行されるように見えるようにすることで、幅広い最適化を行うことができます。 実際のソースコードを使用する場合、最適化には、無関係なコマンド、繰り返しの呼び出し、または適切に記述されていない関数がないことを確認することが含まれます。 コンパイル時に、コンパイラによって多くの最適化が自動的に実行され、プログラマがさまざまなコンパイラスイッチまたはディレクティブを使用してガイドできます。
コンパイラーまたは専用の最適化プログラムで発生する可能性のある自動最適化には、人間のプログラマーにとって実用的であるには複雑すぎるトリックが含まれることがよくあります。 これには、プログラム内の命令の移動が含まれるため、元々書き込まれた順序ではなく、プロセッサにとってより効率的な方法で実行されます。 また、メモリブロックなどのリソースを意図的にシフトして、より高速にアクセスできるようにすることもできます。 ほとんどのプログラム最適化は、コンパイラレベルで自動的に行われます。
繰り返しまたは積極的なプログラム最適化の複雑さの1つは、プログラムをより効率的に実行するように変更すると、機能の追加やバグの修正など、他の目的で変更することが一般的に難しくなることです。 これは、最適化がすべての最適化を元に戻すことを必要とせずに簡単に変更または新しいコードに適応しない設定プログラムの動作をロックし始めると発生する可能性があります。 大きな問題は、多くの場合、最適化されたプログラムが人間が読めなくなることです。これは、簡潔なコマンドと古典的な制御構造の代わりにトリックとショートカットが使用されるためです。 これらの理由により、大幅なコード変更によりプログラムがわずかに効率的に動作する場合でも、停止することが許容されるレベルのプログラム最適化がしばしばあります。