En aquest mòdul, aprendrem com optimitzar el rendiment dels nostres programes CL per assegurar-nos que funcionin de manera eficient i ràpida. La optimització del rendiment és crucial per a la gestió de recursos i per garantir que els sistemes funcionin de manera òptima, especialment en entorns de producció.

Objectius del Mòdul

  • Comprendre la importància de l'optimització del rendiment.
  • Identificar colls d'ampolla en el rendiment.
  • Aplicar tècniques per millorar l'eficiència dels programes CL.

Conceptes Clau

  1. Importància de l'Optimització del Rendiment

  • Eficiència de Recursos: Reduir l'ús de CPU, memòria i altres recursos del sistema.
  • Temps de Resposta: Millorar el temps de resposta dels programes per a una millor experiència d'usuari.
  • Escalabilitat: Assegurar que els programes puguin gestionar un augment en la càrrega de treball sense degradació significativa del rendiment.

  1. Identificació de Colls d'Ampolla

  • Monitoratge del Sistema: Utilitzar eines de monitoratge per identificar àrees problemàtiques.
  • Anàlisi de Logs: Revisar els logs per detectar operacions que consumeixen molt de temps.
  • Perfils de Rendiment: Crear perfils de rendiment per analitzar l'ús de recursos.

  1. Tècniques d'Optimització

3.1. Optimització de Codi

  • Eliminació de Codi Innecessari: Revisar i eliminar codi que no sigui essencial.
  • Simplificació de Lògica: Simplificar la lògica del programa per reduir la complexitat.
  • Reutilització de Codi: Utilitzar subrutines i procediments per evitar duplicació de codi.

3.2. Gestió Eficient de Fitxers

  • Accés Seqüencial vs. Aleatori: Utilitzar accés seqüencial quan sigui possible per millorar la velocitat de lectura/escriptura.
  • Buffers de Fitxers: Utilitzar buffers per reduir el nombre d'operacions d'E/S.

3.3. Optimització de Treballs

  • Planificació de Treballs: Programar treballs en hores de baixa activitat per reduir la càrrega del sistema.
  • Priorització de Treballs: Assignar prioritats adequades als treballs per assegurar que els més crítics es completin primer.

3.4. Utilització de Comandes Eficients

  • Comandes Natives: Utilitzar comandes natives de CL que estan optimitzades per al sistema.
  • Evitar Comandes Costoses: Evitar l'ús de comandes que consumeixen molts recursos, com ara les que impliquen operacions massives de dades.

Exemples Pràctics

Exemple 1: Simplificació de Lògica

/* Codi original */
IF COND(&VAR1 *EQ 'A') THEN(DO)
   IF COND(&VAR2 *EQ 'B') THEN(DO)
      /* Accions */
   ENDDO
ENDDO

/* Codi optimitzat */
IF COND(&VAR1 *EQ 'A' *AND &VAR2 *EQ 'B') THEN(DO)
   /* Accions */
ENDDO

Explicació: En aquest exemple, hem combinat dues condicions en una sola, reduint la complexitat del codi i millorant la seva llegibilitat.

Exemple 2: Utilització de Buffers

/* Codi sense buffer */
CPYF FROMFILE(MYLIB/MYFILE) TOFILE(QTEMP/MYFILECOPY)

/* Codi amb buffer */
OVRDBF FILE(MYFILE) TOFILE(QTEMP/MYFILECOPY) OVRSCOPE(*JOB)
CPYF FROMFILE(MYLIB/MYFILE) TOFILE(QTEMP/MYFILECOPY)
DLTOVR FILE(MYFILE)

Explicació: Utilitzant OVRDBF, podem millorar l'eficiència de la còpia de fitxers mitjançant l'ús de buffers.

Exercicis Pràctics

Exercici 1: Identificació de Colls d'Ampolla

  1. Utilitza una eina de monitoratge per identificar un coll d'ampolla en un programa CL existent.
  2. Documenta les àrees problemàtiques i proposa solucions per millorar el rendiment.

Exercici 2: Optimització de Codi

  1. Revisa un programa CL que hagis escrit anteriorment.
  2. Identifica parts del codi que es poden simplificar o optimitzar.
  3. Implementa les millores i compara el rendiment abans i després de l'optimització.

Solucions als Exercicis

Solució a l'Exercici 1

  1. Identificació de Colls d'Ampolla:

    • Utilitza la comanda WRKSYSACT per monitorar l'activitat del sistema.
    • Revisa els logs generats per la comanda DSPLOG per identificar operacions lentes.
    • Utilitza WRKACTJOB per veure els treballs actius i el seu ús de recursos.
  2. Documentació i Propostes:

    • Documenta les operacions que consumeixen més temps.
    • Proposa l'ús de buffers, simplificació de lògica o reprogramació de treballs com a solucions.

Solució a l'Exercici 2

  1. Revisió del Programa:

    • Identifica bucles innecessaris, condicions complexes i codi duplicat.
  2. Optimització:

    • Simplifica les condicions complexes combinant-les.
    • Utilitza subrutines per evitar duplicació de codi.
    • Implementa buffers per operacions d'E/S.
  3. Comparació de Rendiment:

    • Mesura el temps d'execució abans i després de les millores.
    • Utilitza WRKACTJOB per comparar l'ús de recursos.

Conclusió

En aquest mòdul, hem après la importància de l'optimització del rendiment i hem explorat diverses tècniques per millorar l'eficiència dels nostres programes CL. Hem vist com identificar colls d'ampolla i aplicar solucions pràctiques per millorar el rendiment. Amb aquestes habilitats, estem millor preparats per escriure programes CL que funcionin de manera òptima en qualsevol entorn.

© Copyright 2024. Tots els drets reservats