Performance entre compute et move

 WORKING-STORAGE SECTION.
 01 WORKING-VAR.
    05 W-TAU-3-6         PIC S9(3)V9(6) COMP-3.
    05  W-TAU-2-5        PIC S9(2)V9(5).
    05 W-CPT             PIC 9(09).

 PROCEDURE DIVISION.
    move 123,123456       to W-TAU-3-6
    move 12,12345         to W-TAU-2-5

    perform until W-CPT = 999999999
*      compute W-TAU-3-6 = W-TAU-2-5
       move W-TAU-2-5     to W-TAU-3-6
       add 1              to W-CPT
    end-perform

Aujourd’hui, j’ai voulu savoir ce qui est le mieux à utiliser entre un compute et un move pour renseigner un champ. J’ai donc exécuter le petit bout de code si dessus.
Résultats :

Temps d’exécution Temps CPU
Move 45.49 1,814
35.9 1,81
1.05.83 1,818
Compute 49.44 2,429
38.66 2,421
1.16.26 2,441

Après 3 exécutions de chaque on distingue bien que le compute mange beaucoup plus de CPU que le move pour le même résultat (Ici environ 1/4 de plus). Conclusion, utiliser les compute seulement en cas de calcul et non pour renseigner une variable.

Mise à jour après un second test qui met sur un pied d’égalité le compute et le move (2.500 Temps CPU pour les deux) :

compute W-TAU-2-5 = W-TAU-3-6
move W-TAU-3-6 to W-TAU-2-5

Dans le cas où l’on met une zone plus grande dans une zone plus petite le compute et le move on les mêmes performances, avec une petite préférence personnelle pour le compute qui évite quelques Warning dans ce cas bien précis.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *