Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, コンパイラーおよびランタイム 移行ガイド

REDUCE

REDUCE オプションを指定した場合、コンパイラーは、埋め込みバイトを 上書きすることになる場合でも、構造体へのヌル・ストリングの代入を より少なく単純な操作に軽減することができます。

REDUCE オプションを使用すると、ヌル・ストリングを構造体に 割り当てるために生成されるコードの行数が少なくなり、 その結果として通常はコンパイルが高速になり、コードの実行速度が大きく向上します。しかし、埋め込みバイトはゼロにリセットされることがあります。

例えば次の構造体では、field11field12 の間に 1 バイトの埋め込み があります。

dcl
1 sample ext,
  5 field10 bin fixed(31),
  5 field11 dec fixed(13),
  5 field12 bin fixed(31),
  5 field13 bin fixed(31),
  5 field14 bit(32),
  5 field15 bin fixed(31),
  5 field16 bit(32),
  5 field17 bin fixed(31);

ここで、代入 sample = ''; について考えてみましょう。

NOREDUCE オプションを指定した場合、8 つの割り当てが生成されますが、埋め込みバイトは変更されません。

しかし、REDUCE を指定した場合には、代入は 3 つの操作に軽減されます。

NOREDUCE を指定した場合、次のようなコードが生成されます。

 00004C  5810  3056        00015 |      L     r1,=A(@CONSTANT_AREA)(,r3,86)
 000050  58E0  305A        00015 |      L     r14,=A(SAMPLE)(,r3,90)
 000054  4100  0000        00015 |      LA    r0,0
 000058  D206  E004  1000  00015 |      MVC   FIELD11(7,r14,4),+CONSTANT_AREA(r1,0)
 00005E  5000  E000        00015 |      ST    r0,<s9:d0:l4>(,r14,0)
 000062  5000  E00C        00015 |      ST    r0,<s9:d12:l4>(,r14,12)
 000066  5000  E010        00015 |      ST    r0,<s9:d16:l4>(,r14,16)
 00006A  5000  E014        00015 |      ST    r0,<s9:d20:l4>(,r14,20)
 000072  5000  E018        00015 |      ST    r0,<s9:d24:l4>(,r14,24)
 000076  5000  E01C        00015 |      ST    r0,<s9:d28:l4>(,r14,28)
 00007A  5000  E020        00015 |      ST    r0,<s9:d32:l4>(,r14,32)

しかし、REDUCE を指定すると、次のようなコードが生成されます。

 00004C  5810  3042        00015 |      L     r1,=A(SAMPLE)(,r3,66)
 000050  58E0  3046        00000 |      L     r14,=A(@CONSTANT_AREA)(,r3,70)
 000054  D703  1000  1000  00015 |      XC    _shadow1(4,r1,0),_shadow1(r1,0)
 00005A  D206  1004  E000  00015 |      MVC   _shadow1(7,r1,4),+CONSTANT_AREA(r14,0)
 000060  D717  100C  100C  00015 |      XC    _shadow1(24,r1,12),_shadow1(r1,12)

そのため、最も良いパフォーマンスを得るには、REDUCE コンパイラー・オプションを使用してください。


Terms of use | Feedback

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