Acoto que en los casos que se pueda emplear los <FS> lo recomiendo plenamente
ya que podemos reducir la velocidad hasta 3 veces de la velocidad original
de un programa.
Les dejo una prueba que hice para comprobarlo.
Mis resultados Fueron.
WORKAREA: 0.42
FIELD-SYMBOLS: 0.14
Mis resultados Fueron.
WORKAREA: 0.42
FIELD-SYMBOLS: 0.14
*&---------------------------------------------------------------------*
*& Report Z_WA_VS_FS
*&---------------------------------------------------------------------*
*&COMPRUEBA VELOCIDAD ENTRE UN WORKAREA Y UN FIELD SYMBOLS
*&SE PUEDE REDUCIR 3 VECES LA VELOCIDAD DE UN PROGRAMA USANDO <FS>
*&---------------------------------------------------------------------*
REPORT Z_WA_VS_FS.
*TIPO ESTRUCTURA
TYPES: BEGIN OF TY_S_DATA,
CADENA TYPE string,
END OF ty_S_DATA.
*TIPO TABLA
TYPES TY_DATA TYPE TABLE OF TY_S_DATA.
DATA: IT_DATA TYPE TY_DATA, "TABLA INTERNA
WA_DATA LIKE LINE OF IT_DATA."WORK AREA
*FIELD-SYMBOLS
FIELD-SYMBOLS: <FS> LIKE LINE OF IT_DATA. "SUPLANTARA EL WORKAREA
DATA: T_INI TYPE i, "TIEMPO INICIAL
T_FIN TYPE i, "TIEMPO FINAL
TIME_WA TYPE p DECIMALS 2, "TIEMPO WORKAREA
TIME_FS TYPE p DECIMALS 2. "TIEMPO FIELD-SYMBOLS
DO 2000000 TIMES.
WA_DATA-CADENA = SY-INDEX.
APPEND wa_data TO it_data.
ENDDO.
"CALCULANDO PARA EL WORKAREA
GET RUN TIME FIELD T_INI.
LOOP AT IT_DATA INTO WA_DATA.
ENDLOOP.
GET RUN TIME FIELD T_FIN.
TIME_WA = ( T_FIN - T_INI ) / 1000000. "TIEMPO EN MILISEGUNDOS
"CALCULANDO PARA EL FIELDSYMBOLS
GET RUN TIME FIELD T_INI.
LOOP AT IT_DATA ASSIGNING <FS>."USO EL ASSIGNING PARA INGRESAR LOS VALORES AL FS
ENDLOOP.
GET RUN TIME FIELD T_FIN.
TIME_FS = ( T_FIN - T_INI ) / 1000000 .
WRITE: 'TIEMPO DEL FIELD-SYMBOLS', TIME_FS.
SKIP.
WRITE: 'TIEMPO DEL WORKAREA', TIME_WA.
No hay comentarios:
Publicar un comentario