SAP – GET RUN TIME FIELD – e CL_ABAP_RUNTIME – Special Techniques – Abap

Publicado: 12 de maio de 2014 em Abap

Para testar e checar seu programa ABAP você pode usar técnicas especiais que permitem que o desenvolvedor avalie a velocidade de execução de uma determinada rotina. Você pode medir uma rotina de seu programa criando um campo que retorna o tempo de execução de determinada expressão ou bloco de instruções usando o comando GET RUN TIME FIELD . Você pode também usar métodos estáticos da classe chamada CL_ABAP_RUNTIME para medir tempo de execução com alta precisão de tempo.

RUNTIME

RUNTIME

Exemplo:

Neste exemplo usamos técnicas especiais para medir o tempo de execução de rotinas ABAP, você pode notar que usamos dois métodos diferentes para medida.

Abap

*&---------------------------------------------------------------------*
*& Report  ZRUNTIMECAMPO
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Medir tempo de execução de um programa ABAP
*&---------------------------------------------------------------------*

REPORT  ZRUNTIMECAMPO.

* Declara campos para runtime
DATA : objTempo TYPE REF TO IF_ABAP_RUNTIME,
       tempo1   TYPE i,
       tempo2   TYPE i,
       tempo3   TYPE i,
       tempo4   TYPE i.

* Declara campos para calculo
DATA : Numero    TYPE i VALUE 15000,
       calculo1  TYPE i VALUE 1000,
       calculo2  TYPE i VALUE 2,
       expressao TYPE i.

* Mostra titulo
Write : / 'Medida em Microsegundos'  COLOR 3.
SKIP 2.
Write : / 'Variável'  COLOR 5.
SKIP 1.

* Cria primeira medida de tempo de execução
DO Numero TIMES.
   GET RUN TIME FIELD TEMPO1.
ENDDO.

Write : / 'Tempo de execução do primeiro looping - vazio: ', TEMPO1 COLOR 4.

* Cria segunda medida de tempo de execução
Do Numero TIMES.
   GET RUN TIME FIELD TEMPO2.
   EXPRESSAO = NUMERO * CALCULO1 / CALCULO2.
ENDDO.

* Medida de tempo atravez de um objeto Abap
Write : / 'Tempo de execução do segundo looping - calculo: ', TEMPO2 COLOR 6.
SKIP 1.

* Cria objeto
OBJTEMPO = CL_ABAP_RUNTIME=>CREATE_HR_TIMER( ).

Write : / 'Objeto'  COLOR 5.
SKIP 1.

* Medida de tempo por objeto
DO Numero TIMES.
   TEMPO3 = OBJTEMPO->GET_RUNTIME( ).
ENDDO.

Write : / 'Objeto - tempo final de execução - vazio: ', TEMPO3 COLOR 4.

* Zera variavel
EXPRESSAO = 0.

* Medida de tempo por objeto
DO Numero TIMES.
   TEMPO4 = OBJTEMPO->GET_RUNTIME( ).
   EXPRESSAO = NUMERO * CALCULO1 / CALCULO2.
ENDDO.

Write : / 'Objeto - tempo final de execução - calculo: ', TEMPO3 COLOR 6.
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s