Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

OPTIMIZE

OPTIMIZE オプションでは、必要な最適化のタイプを指定します。

構文図を読む構文図をスキップする   .-NOOPTIMIZE-------------------.
>>-+-OPTIMIZE--+----------------+-+----------------------------><
               |    .-2----.    |
               '-(--+-TIME-+--)-'
                    +-0----+
                    '-3----'
 

省略形: OPT、NOPT

OPTIMIZE(0)
高速コンパイルを指定しますが、最適化は禁止します。
OPTIMIZE(2)
さらに効率のよいオブジェクト・プログラムが作成されるために、 生成された機械命令を最適化します。 このタイプの最適化により、オブジェクト・モジュールに必要な 主記憶域の大きさを削減することもできます。
OPTIMIZE(3)
OPTIMIZE(2) のもとで行われたすべての最適化に加えて、追加の最適化を実行します。OPTIMIZE(3) では、コンパイラーは通常、特に大容量ブロックで多くの変数を持つプログラムに対し、より小さく効率のよいオブジェクト・コードを生成します。しかし、OPTIMIZE(3) を使用してコンパイルを完了することは、OPTIMIZE(2) を使用した場合よりもかなり多くの時間および領域を必要とすることにもなります。

OPTIMIZE オプションと一緒に、DFT(REORDER) オプションを使用することを 強くお勧めします。実際、次の条件がすべて当てはまる場合は、PROCEDURE ブロック または BEGIN ブロックに対する OPTIMIZE の効果は 大幅に限定されます。

OPTIMIZE(2) を指定すると、NOOPTIMIZE の場合よりコンパイル時間が 大幅に増えることがあり、所要スペースが大幅に増えることがあります。 例えば、OPTIMIZE(2) を指定して大規模なプログラムをコンパイルするには 数分かかる場合があり、75M 以上の領域が必要になる可能性があります。

OPTIMIZE(3) の使用により、OPTIMIZE(2) を使用する場合よりもコンパイルに必要な時間と領域が増加します。大規模なプログラムの場合、OPTIMIZE(3) でのプログラムのコンパイル時間が OPTIMIZE(2) の 2 倍より大きくなる可能性があります。

コンパイラーは最適化の際にコードを移動して実行時効率を上げる 場合があります。 その結果、プログラム・リストの中のステートメント番号が、 ランタイム・メッセージで使用されるステートメント番号と対応しなくなることが あります。

NOOPTIMIZE は OPTIMIZE(0) と同等です。

OPTIMIZE(TIME) は、OPTIMIZE(2) と同等です。

OPTIMIZE(2) または OPTIMIZE(3) を使用すると、TEST オプションの機能が大きく制限されるので注意してください。 次に例を示します。

コードのパフォーマンス改善に最適なオプションの選択の詳細については、パフォーマンスの向上を参照してください。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)