Juste pour m'amuser, j'ai compilé les version des posts 866, 882 et 886 (celui la en deux version, une avec la division entiere, l'autre avec le modulo)
Tout compilé en gcc -O3 fizz_xxx.c -o fizz_xxx
Premier constat:
[godzil@jiji Code]$ ls -l fizz_*
-rwxr-xr-x 1 godzil godzil 5227 May 14 12:22 fizz_882
-rwxr-xr-x 1 godzil godzil 5211 May 14 12:23 fizz_886
-rwxr-xr-x 1 godzil godzil 5613 May 14 12:04 fizz_kevin866
-rwxr-xr-x 1 godzil godzil 5211 May 14 12:23 fizz_modulo886
Kevin je peux t'appeler l'optimisateur humain!
On vois aussi que utiliser une division entiere + multiplication n'a pas d'impact sur la taille du code generé.
On remarquera aussi que la difference entre la version du 882 qui fait plusieurs fois le meem calcul est pas enorme comparé a la version du 886.
Essayont de voir ce qu'il se passe. Un coup de objdump -d fizz_XXX > fizz_XXX.s:
Fichier joint : fizz_882.s
Fichier joint : fizz_886.s
Fichier joint : fizz_kevin866.s
Fichier joint : fizz_modulo886.sun peu d'explication plus tard dans la matinée