デフォルトでは、標準コンパイルでコードに関してごく基本的なローカルの最適化が実行されるのみですが、さらに、高速コンパイルと完全デバッグがサポートされています。コードをいったん開発、テスト、デバッグした後は、 XL C/C++ が提供する高度な最適化機能を利用することができます。この機能により、手動で再コーディングしなくても、パフォーマンスをかなり向上させることができます。実際、コードの手動最適化を過度に行うこと (例えばループの手動アンロール) はお勧めできません。構成を誤ると、コンパイラーが混乱し、新しいマシンに対するアプリケーションの最適化が難しくなるためです。
手動最適化の代わりに、コンパイラー・オプションのセットを使用することで、 XL C/C++ コンパイラーの最適化を制御することができます。これらのオプションでは、次のような方法でコードを最適化できます。
プログラムの最適化は一種のトレードオフであり、最適化の結果、コンパイル時間は長くなり、プログラム・サイズとディスク使用量は大きくなり、デバッグ機能は低下することに注意してください。最適化のレベルを高くすると、プログラム・セマンティクスが影響を受け、そのため、最適化の前までは正常に実行されていたコードが予想どおりに実行されなくなることがあります。つまり、すべてのアプリケーションにとって、あるいはアプリケーションのすべての部分にとって、最適化が無条件に望ましいわけではありません。計算的に密ではないプログラムの場合、最適化によって命令シーケンスを高速化することよりは、プログラムの容量を小さくしてページングやキャッシュのパフォーマンスを向上させることの方が、場合によっては重要です。
パフォーマンス向上によって恩恵が得られるコードのモジュールを確認するには、 -p または -pg オプションを指定して、選択したファイルをコンパイルし、オペレーティング・システム・プロファイラー gprof を使用して、「ホット・スポット」であり、計算的に密である関数を識別します。サイズと速度がどちらも重要である場合は、ホット・スポットが含まれるモジュールを最適化し、それ以外のモジュールではコード・サイズを圧縮したままにしておきます。適切なバランスを検出するには、手法の組み合わせをいろいろ試してみる必要があります。
最適化で使用できるオプションをすべて網羅し、カテゴリー別に編成したリストが、最適化およびパフォーマンスに関するオプションの要約に記載されています。
最後に、アプリケーションを手動で調整してコンパイラーが使用する最適化手法を補う場合は、パフォーマンスを向上させるためのアプリケーションのコーディングに記載されているコーディングのパフォーマンスに対する提案と、その最良実例を参考にしてください。