構文:
/transform_loops または /notransform_loops
/transform_loops (または /optimize:5) オプションは,ループ内の配列引用に適用されるループ変換の最適化グループを有効にします。これらの最適化はメモリー・システムの性能を向上させることができ,通常は複数のループの入れ子に適用されます。ループ変換の最適化の対象として選択されるループは,つねにカウンター付きループです (DO または IF ループは含まれますが,カウンターのない DO WHILE ループは含まれません)。
ビジュアル開発環境では,「Fortran」タブの「Optimizations」カテゴリの「Apply Loop Transformation Optimizations」を指定します。
一般にループ変換の最適化を妨げる状況としては,インライン展開されていない副プログラム引用 (外部関数呼び出しなど),複雑な終了条件,カウンターのないループなどがあります。
/transform_loops に関連する最適化の形式には次のものがあります。
ループのブロック化
ループ分散
ループ結合
ループ交換
ループのスカラ置換
外側のループ展開
ループ変換の最適化は,/optimize:5 によって有効にされる最適化のサブセットです。ia32 システムでは,/transform_loops を指定する代わりに /optimize:5 を指定することができます。ia64 システムでは,/pipeline と /transform_loops の両方を指定する代わりに /optimize:5 を指定することができます。
ia64 システムでソフトウェア・パイプラインなしでループ変換の最適化を指定するには,次のどちらかを行います。
/optimize:5 を /nopipeline とともに指定します。
/transform_loops を /optimize:4,/optimize:3,または /optimize:2 とともに指定します。この最適化は,/optimize:2 よりも低い最適化レベルでは実行されません。
/transform_loops が特定のプログラムにとって有利であるかどうかを判断するには,ループ変換の最適化ありとなしでコンパイルした同じプログラム (または副プログラム) のプログラム実行のタイミングを比較してください。たとえば /transform_looops と /notransform_loops でコンパイルしたプログラムを比較します。
詳細については,「ループ変換」を参照してください。