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.