!--a11y-->

GET RUN TIME FIELD 命令を使用して、プログラムセグメントの相対実行時間をマイクロ秒で計測することができます。構文は以下のとおりです。
GET RUN TIME FIELD <f>.
この命令が最初に呼び出される際、型 I の項目<f> の値はゼロに設定されます。その後、命令が呼び出されるたびに、項目<f> の値は、命令が最初に呼び出されて以後経過したプログラムの実行時間に設定されます。

R/3 システムのクライアント/ サーバ環境では、実行時間は固定値ではなく、システムの負荷によって変化します。このため、実行時間を複数回計測して、その結果から最小値および平均値を計算することをお奨めします。

DATA T TYPE I.
GET RUN TIME FIELD T.
WRITE: / 'Runtime', T.
DO 10 TIMES.
GET RUN
TIME FIELD T.
WRITE: / 'Runtime', T.
ENDDO.
このプログラムセグメントの出力一覧は、以下のようになります。
Runtime 0
Runtime 4.926
Runtime
5.228
Runtime
5.649
Runtime
6.100
Runtime
6.512
Runtime
6.906
Runtime
7.324
Runtime
7.724
Runtime
8.231
Runtime
8.623
初期化後、DO ループの実行時間は項目 T で集計されます。
特定のプログラムセグメントの実行時間を計測する最良の方法は、セグメントの前と後の相対実行時間の差異を計算する方法です。

DATA: T1 TYPE I,
T2 TYPE
I,
T TYPE P DECIMALS 2,
N TYPE I VALUE 1000.
T = 0.
DO N TIMES.
GET RUN
TIME FIELD T1.
*****************************
* Code to be tested
*
*****************************
GET RUN TIME
FIELD T2.
T2 = T2 -
T1.
T = T + T2
/ N.
ENDDO.
WRITE: / ' 平均実行時間: ', T, ' マイクロ秒'.
この例では、テスト対象のプログラムセグメント周辺に構築された DO ループが示されてます。この例では、プログラムセグメントは単なるコメントになっています。プログラムセグメントの前 (T1) と後 (T2) の相対実行時間の差異は、N 回計測されています。平均値 (T) は、この結果から計算されます。出力は以下のようになります。
平均実行時間: 23,40 マイクロ秒
この出力は、実行時間の計測結果のオフセット時間を示します。このオフセットは、実際のプログラムセグメントの実行時間から差し引く必要があります。
プログラムのコメントブロックを単純な代入と置き換えると
T = T.
結果は以下のようになります。
平均実行時間: 28.84 マイクロ秒
これは、単純な代入 ( データ型変換なし) の実行時間が約 5 マイクロ秒であることを示します。型 C の項目に T を代入すると、データ型変換によって、実行時間は約 4 倍増えます。