Condition "si" et un calcul

Zylba -  
nicocorico Messages postés 846 Statut Membre -
Bonjour,
Je voudrais savoir même si cela est minime,
Un calcul est-il plus long qu'une vérification de condition ?

Je ne sais pas si je suis très clair, mais en exemple ça donnerai :
Est-ce que 15*3=x est-il plus long qu'un Si x==45 ??

Merci.

A voir également:

4 réponses

skymax406 Messages postés 242 Statut Membre 24
 
Tu fait deux opérations complétement différente : l'un correspond a une mise en mémoire et l'autre a un test sur quelque chose qui est déja en mémoire.

En gros : 15*3=x --> X = 15 * 3 donc X = 45 ( Mise en mémoire de la variable X )
x==45 --> donc si X == 45 la condition est validée ( Test de la valeur de la variable X qui a été précédemment mise en mémoire )
0
nicocorico Messages postés 846 Statut Membre 138
 
Hé bien, dans le cas des constantes le compilateur fait les calculs lui-même et ne laisse que les résultats dans le programme, donc dans ce cas précis ça revient au même!
0
Zylba10 Messages postés 2 Statut Membre
 
Je suis au courant de cela mais lequel est le plus long à traiter pour l'ordinateur ?
0
skymax406 Messages postés 242 Statut Membre 24
 
Un ordinateur c'est une grosse calculette, donc je pense que l'opération prend moins de temps cpu que la comparaison
0
nicocorico Messages postés 846 Statut Membre 138
 
Entre mise en mémoire ou comparaison? Dans les même conditions, ça prend en gros le même temps, à part que la comparaison nécessite un saut conditionnel pour être exploité et cette opération prendra du temps à son tour...
0
Zylba10 Messages postés 2 Statut Membre
 
Merci ! :-)
0
nicocorico Messages postés 846 Statut Membre 138
 
Le cpu n'est pas qu'une grosse calculette, c'est aussi un gros comparateur! Il est également très optimisé pour cette fonction! En fait les cpu ont une architecture très complexe pour optimiser différentes opérations, et toutes ces opérations de base, massivement présentes dans les programmes, sont les premières concernées par ces optimisations...
0
Utilisateur anonyme
 
Salut!

En fait, cela dépend de comment tu effectues ton test et ton calcul.

Par exemple, si tu compares "int x = 15*3" et "if(x==15*3)", le if prendra plus de temps car le calcul est d'abord effectué, puis stocké, puis comparé (une opération de plus)

Par contre, si tu compares "int x = 15*3" et "if(x==45)" le if prendra moins de temps car il y a juste 2 opérations effectuées: assignation et comparaison

;-)
0
nicocorico Messages postés 846 Statut Membre 138
 
Merci pour ce complément d'information, cependant, le calcul est en fait effectué par le compilateur... il n'y a aucune raison de ne pas calculer directement le 15*3 et d'en revenir au même qu'en écrivant 45 dans le programme. Et ça a le mérite de permettre d'écrire certaines constantes avec des valeurs décomposées souvent plus représentatives pour le programmeur, sans sanctionner la vitesse d'exécution!
Et pour info, le processeur travaille prioritairement avec ses registres, donc il n'aurait pas besoin de stocker la valeur avant de la comparer.
0