POWER MATH: TESTE DE VITESSE ENTIERS VS REELS , CLASS VS STRUCT
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
6 mars 2010 à 18:58
dedalusman
Messages postés4Date d'inscriptionvendredi 5 mars 2010StatutMembreDernière intervention 1 juin 2016
-
7 mars 2010 à 11:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
dedalusman
Messages postés4Date d'inscriptionvendredi 5 mars 2010StatutMembreDernière intervention 1 juin 2016 7 mars 2010 à 11:57
Merci pour ce commentaire car je n'avait pas pensé à ce type d'optimisation des compilateurs modernes.
J'utilise Dev C++. Il est possible de voir que le temps d'exécution est en rapport avec le nombre de boucle et le type d'opération. Donc la boucle est codée. (Voir la capture écran)
La partie entière du temps indiqué est en seconde.
for(nb=0;nb<1000000000;nb++)
{
e1=e2/e3;
}
se fait en 46,953 secondes
J'obtiens (voir la capture écran) la même valeur de temps que pour:
for(nb=0;nb<1000000000;nb++)
{
f1=f2/f3;
}
Peut-être qu'un OS multitâche comme Win XP ne permet pas des mesures précises au millième de seconde étant donnée qu'il y a un basculement perpétuel entre les tâches ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 mars 2010 à 18:58
for(nb=0;nb<1000000000;nb++)
{
e1=e2/e3;
}
Tu es certain que le compilo a généré le code de la boucle ???
Un compilo normal moderne vire la boucle en voyant qu'une seule opération donne le résultat. Il faut sortir le listing ASM pour etre certain.
7 mars 2010 à 11:57
J'utilise Dev C++. Il est possible de voir que le temps d'exécution est en rapport avec le nombre de boucle et le type d'opération. Donc la boucle est codée. (Voir la capture écran)
La partie entière du temps indiqué est en seconde.
for(nb=0;nb<1000000000;nb++)
{
e1=e2/e3;
}
se fait en 46,953 secondes
J'obtiens (voir la capture écran) la même valeur de temps que pour:
for(nb=0;nb<1000000000;nb++)
{
f1=f2/f3;
}
Peut-être qu'un OS multitâche comme Win XP ne permet pas des mesures précises au millième de seconde étant donnée qu'il y a un basculement perpétuel entre les tâches ?
6 mars 2010 à 18:58
{
e1=e2/e3;
}
Tu es certain que le compilo a généré le code de la boucle ???
Un compilo normal moderne vire la boucle en voyant qu'une seule opération donne le résultat. Il faut sortir le listing ASM pour etre certain.