Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Saturday, April 26, 2014

Cinco Tips para Reducir el tiempo de Respuesta Mejorando el Código de programación en RPG

 











Optimizar un código de programación persigue dos objetivos:

Ø      Mejorar la legibilidad del código para reducir el tiempo que toma actualizarlo.

Ø      Reducir el tiempo de respuesta de la ejecución del programa

Cinco Tips para Reducir el tiempo de Respuesta Mejorando el Código de programación en RPG


1.-Uso de estructura de datos

En programación RPG II y RPG III, podemos ver, en general, una gran cantidad de MOVE, MOVEL para poder armar claves de búsqueda, grabar información en un archivo, realizar comparaciones de campos de longitud desigual, etc.

Declarar una estructura de datos con los campos o variables  y que tenga definidos los subcampos con sus diversas longitudes, nos permite hacer un solo MOVE y rellenar automáticamente todas las variables auxiliares que hemos utilizado durante el programa y que hemos repetidamente actualizado mediante MOVE y MOVEL.
Esto reduce sensiblemente el tiempo de respuesta del programa

2.-MOVE Versus Z-ADD

Consume menos tiempo de ejecución el MOVE que el Z-ADD
La instrucción Z-ADD implica internamente la realización de dos instrucciones: mover cero a la variable y luego sumarle un valor.
El MOVE directamente coloca el valor.

3.-SELECT Versus If Anidados

Algunas instalaciones tienen una verdadera fascinación por los IF anidados. Parece que mientras mas anidados y mas IF sean más eficiente es el programa: Todo lo contrario.
Utiliza SELECT en lugar de IF Anidados. El Select hace mas legible el programa y al evaluar la condición y verificar que se cumple, el sistema operativo abandona la evaluación del resto de las sentencias y pasa directamente a la siguiente instrucción por lo que el tiempo de respuesta se reduce considerablemente.





4.-Chain de Tablas Pequeñas

A veces tenemos un lazo por ejemplo un DO WHILE que lee un archivo de millones de registros. Por cada iteración se realiza un CHAIN a la tabla de sucursales por ejemplo. Si tenemos 6 millones de registros hacemos 6 millones de chain a una tabla que contiene 50 registros. Este acceso constante al disco para un archivo tan pequeño consume un tiempo enorme de ejecución.
Para reducir el tiempo de respuesta es preferible, al principio del programa, cargar la tabla de sucursales en un par de arreglos. Luego el lazo de los 6 millones de registros hace un Lookup a ese arreglo que fue cargado en memoria y leído solamente 50 veces.
Guao! muy distinto 50 accesos al disco que 5.999.950 ¿verdad?
Notaras la diferencia en tiempo de respuesta inmediatamente de manera impactante.



5.-Condiciones de los Lazos

Podemos realizar lazos de lecturas sobre un archivo DO WHILE  y dentro del lazo evaluar ciertas condiciones para determinar si abandonamos el lazo o permanecemos en el mismo. A veces se cumple la condición para salir del lazo y podemos aplicar un LEAVE en lugar de permanecer leyendo todo el archivo hasta fin de archivo.


Si quieres tener mayor información sobre este tema puedes revisar los artículos publicados por mi anteriormente en estos enlaces:






Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo. 




Autor: Ing. Liliana Suárez


No comments: