Condition "si" et un calcul [Fermé]

Signaler
-
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
-
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.


4 réponses

Messages postés
215
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
22 avril 2015
20
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 )
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
125
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!
Messages postés
2
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
9 novembre 2012

Je suis au courant de cela mais lequel est le plus long à traiter pour l'ordinateur ?
Messages postés
215
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
22 avril 2015
20
Un ordinateur c'est une grosse calculette, donc je pense que l'opération prend moins de temps cpu que la comparaison
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
125
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...
Messages postés
2
Date d'inscription
vendredi 9 novembre 2012
Statut
Membre
Dernière intervention
9 novembre 2012

Merci ! :-)
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
125
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...
Messages postés
623
Date d'inscription
vendredi 26 juillet 2002
Statut
Membre
Dernière intervention
11 novembre 2012
967
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


;-)
Messages postés
815
Date d'inscription
dimanche 19 juin 2011
Statut
Membre
Dernière intervention
3 juillet 2018
125
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.