✒️ABAP La performance en ABAP
ABAP La performance en ABAP
Performance en ABAP: análisis del desempeño y rendimiento del programa. La transacción SE30 es sumamente útil para el análisis de performance.
Una vez en la transacción presionamos el botón TIPS & TRICKS, abrimos la carpeta INTERFACE SQL. Clickeamos SELECT AGGREGATES, se visualizan 2 códigos ABAP que realizan lo mismo de 2 formas doferentes, el de la izquierda es menos optima. Si presionamos el botón MEDIR TIEMPO DE EJECUCION, nos muestra lo que tarda cada consulta, la de la derecha mucho más óptima que la de la izquierda.
Click en SELECT WITH SELECT LIST, se visualizan los dos select. Medimos el tiempo de ejecución. * es menos eficiente que especificar los campos a seleccionar.
Abrimos la carpeta OPERACIONES DE ARRAY TABLAS INTERNAS. Select into table. Medir tiempo de ejecución. Vemos los dos códigos, vemos que SELECT INTO TABLE es mucho más eficiente desde el punto de vista de la performance.
ARRAY INSERT VS SINGLE-ROW INSERT: 2 códigos, el de la izquierda recorre todos los registros de la TI e inserta, el de la derecha ejecuta la sentencia INSERT FROM TABLE sin recorrer. La opción de la derecha es altamente recomendable.
ARRAY-SELECT VS SELECT-END SELECT: 2 códigos, a la izquierda SELECT INTO y luego recorremos la tabla interna con un LOOP, a la derecha SELECT-END SELECT (desaconsejado).
Abrimos la carpeta de TABLAS INTERNAS: click USANDO ESTRUCTURAS EXPLICITAS: vemos 2 códigos, el resultado es el mismo pero es recomendable evitar asignaciones innecesarias.
BUSQUEDA LINEAL VS BUSQUEDA BINARIA: a la izquierda vemos la busqueda lineal que lee cada registro en forma secuencial de la TI hasta encontrar el que cumple con la concición y a la derecha la busqueda binaria que divide en 2 el espectro de busqueda hasta encontrar el registro buscado. El resultado indica que la busqueda binaria es 20 veces más eficiente que la busqueda lineal.
ACCESO POR CLAVE A MULTIPLES REGISTROS: a la izquierda un LOOP y dentro del mismo un CHECK, a la derecha un LOOP con un WHERE. El resultado indica que es ampliamente recomendable incorporar dentro de los LOOPS las condiciones de busqueda de modo de restringir lo mas posible la cantidad de iteraciones a realizar.
Abrimos la carpeta OPERACIONES DE ARRAY (dentro de TI): opción APPENDEO DE TABLAS: a la izquierda se lopea la TI y se apendea otra, en el de la derecha se hace ambos pasos en uno solo APPEND LINES OF ITAB1 TO ITAB2. Ampliamente recomendable la de la derecha.
Opción INSERTING TABLES: a la izquierda se recorre una TI y se inserta cada registro en otra TI, en la derecha se realizan ambos pasos en uno utilizando la sentencia INSERT LINES OF. Ampliamente recomendable el de la derecha.
DELETING DUPLICATES: la izquierda se emplea una combinación de sentencias para borrar una TI, mientras que a la derecha se usa la sentencia DELETE ADJACENT DUPLICATES, ampliamente recomendable la sentencia de la derecha.
COPIAR TI: en la izquierda se lopea una TI y se apendea cada registro en otra TI, a la derecha se realiza una asignación directa del contenido de la tabla 1 a la tabla 2, para ello ambas tablas deben ser iguales, la segunda opción es la mejor.
COMPARACIÓN DE TI: en el código de la izquierda se recorren y leen las TI para establecer si son iguales o no, en cambio a la derecha se emplea la comparación directa, la opción de la derecha es ampliamente recomendable.
ORDENAMIENTO DE TI: comparamos la diferencia entre especificar el campo por el cual ordenar y no especificar, la diferencia de rendimiento es ampliamente favorable indicando el campo por el cual ordenar.
Abrimos la carpeta TIPOS: PARAMETROS CON TIPO VS PARAMETROS SIN TIPO: a la izquierda no se especifican los tipos de los parametros, a la derecha si, siempre es convieniente la opcion de la derecha.
Abrimos la carpeta IF, CASE: IF VS CASE: es levemente mas performante la opcion CASE para condiciones con muchas opciones.
Abrimos la carpeta CONVERSION DE CAMPOS: seleccionamos TIPOS MIXTOS: a la izquierda multiplamos 2 variables de distinto tipo cuyo resultado va a una variable de distinto tipo de las dos, a la derecha 3 variables de mismo tipo, es más conveniente usar variables del mismo tipo.
ESTA TRANSACCION NOS PERMITE GRABAR EN ARCHIVOS LOS CODIGOS DE TEST QUE EJECUTAMOS.
NOS PERMITE TESTEAR EL CODIGO QUE NOSOTROS MISMOS DESARROLLEMOS, ESCRIBIENDO EL CODIGO QUE QUERRAMOS Y PRESIONANDO EL BOTON DE MEDICION DE TIEMPO.
NOS PERMITE EVALUAR COMO SE DISTRIBUYE EL TIEMPO DEL PROCESAMIENTO DE UN PROGRAMA ABAP. PARA ELLO INGRESAR EL NOMBRE DEL PROGRAMA, EJECUTARLO Y PRESIONAR EL BOTON EVALUAR, ASI VEMOS LOS RESULTADOS EN PANTALLA.
LOS TIEMPOS DEL PROCESAMIENTO DE UN PROGRAMA ABAP SE DIVIDEN ENTRE ABAP, LA BASE DE DATOS Y EL SISTEMA. DE ESTOS 3 ITEMS EL QUE DEBEMOS TENER EN CUENTA PRINCIPALMENTE CUANDO EVALUAMOS LA PERFORMANCE ES EL TIEMPO DE LA BD, ES EL QUE MAS RECURSO CONSUME Y POR LO TANTO EL QUE MAS TIEMPO REQUIERE. CUANTO MAS ALTO SEA EL PORCENTAJE DEL PROCESAMIENTO DE LA BD EN COMPARACION A LOS OTROS 2 PORCENTAJES LOS TIEMPOS DE DURACION DEL PROGRAMA SE IRAN POR LAS NUVES. LO IDEAL ES QUE EL % DE PROCESAMIENTO ABAO SEA LO MAS ALTO POSIBLE Y EL % DE PROCESAMIENTO DE LA BD SEA LO MAS BAJO POSIBLE, PARA LOGRARLO DEBEMOS USAR LAS TECNICAS DE OPTIMIZACION DE LA PERFORMANCE QUE VIMOS EN LA LECCION.
 
 
 
Sobre el autor
Publicación académica de Jose Ignacio Rodini, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Ignacio Rodini
Profesión: Licenciado en Informatica - Argentina - Legajo: HM58N
✒️Autor de: 115 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rodini