Condition "si" et un calcul

Fermé
Zylba - 9 nov. 2012 à 22:20
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 - 9 nov. 2012 à 23:03
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 215 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 22 avril 2015 24
9 nov. 2012 à 22:44
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 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
9 nov. 2012 à 22:45
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 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 9 novembre 2012
9 nov. 2012 à 22:46
Je suis au courant de cela mais lequel est le plus long à traiter pour l'ordinateur ?
0
skymax406 Messages postés 215 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 22 avril 2015 24
9 nov. 2012 à 22:47
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 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
9 nov. 2012 à 22:48
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 Date d'inscription vendredi 9 novembre 2012 Statut Membre Dernière intervention 9 novembre 2012
9 nov. 2012 à 22:48
Merci ! :-)
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
9 nov. 2012 à 22:50
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
9 nov. 2012 à 22:55
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 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 9/11/2012 à 23:04
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