Une boucle d'addition pour un entier
2006-12-23 19:43
Voici un programme erroné (une boucle qui parcourt la liste des entiers): Puisque cela prend moins de temps sur des ordinateurs rapides, il est beaucoup plus difficile de détecter ces problèmes. Le programmeur a plus de chance de ne pas s'en apercevoir. /* * source : add.c * compilation : gcc add.c -o add * exécution : ./add * licence : publique, sans copyright */ int main(void) { int a=0; while(++a>0); return 0; } Voici des résultats sur divers ordinateurs: (time ./add) P2Cel-300 P3Cel-566 P4 2.2Ghz P4 2.8Ghz real 0m51.801s 0m30.738s 0m3.779s 0m6.629s user 0m51.051s 0m27.440s 0m3.776s 0m6.624s sys 0m0.068s 0m0.070s 0m0.000s 0m0.004s P2-Cel 300Mhz: Pentium II (Deschutes) 300.737 (avec environnement graphique) - 0.26 - PC P3-Cel 566Mhz: Pentium III (Coppermine) 564.772 (sans environnement graphique) - 0.39 - vserver P4 2.2Ghz: Intel(R) Pentium(R) 4 CPU 2.26GHz (sans d'environnement graphique) - 0.05 - PC P4 2.8Ghz: Intel(R) Pentium(R) 4 CPU 2.80GHz (avec environnement graphique) - 0.29 - Laptop Évidemment, sur un ordinateur 64bits, l'entier est codé sur 64 bits et la boucle devrait effectuer plus d'itérations.