Coût
Discutez d'informatique ici !
-
MacManus
- Membre Irrationnel
- Messages: 1365
- Enregistré le: 28 Avr 2008, 14:41
-
par MacManus » 18 Nov 2011, 13:22
Bonjour!
J'ai une question un peu naïve...
vaut-il mieux effectuer, dans une boucle (de 1 à n par ex.) :
a/b ou bien a*c (avec c=1/b) , en termes de coût de calcul ??
je sais pas si l'on peut dire qu'une mult. ou une div. équivaut à O(1) ...? et si on suppose a,b et c des matrices, en est-il de même?
merci de me dire si vs avez une petite idée...
-
fesssstif
- Membre Naturel
- Messages: 19
- Enregistré le: 28 Oct 2011, 22:22
-
par fesssstif » 18 Nov 2011, 13:52
salut,
Je ne suis pas expert mais je pense pouvoir apporter quelques éléments,
en premier lieu:
si tu fais a/b => une division
si tu fais a*(1/b) => une division et une multiplication ensuite
donc de là la division directe est mieux.
Après, si tu peux obtenir b ou 1/b avec le même coût (sans faire la divisions à un moment),
je dirai que dans l'absolu il me semble que la multiplication est plus rapide:
la multiplication est une opération casi immédiate, on prend les deux chiffres et on calcule chaque bit du résultat un par un.
Pour une division c'est plus compliquer, il faut procéder par itération, à chaque fois calculer le modulo et la division entière puis recommencer jusquà obtenir la précision voulue.
Voilà pour la théorie, en pratique ça peut aussi dépendre de ton compilateur et de ton ordinateur:
Il est possible que ton compilateur reconnaissent que ces deux expressions sont équivalentes et choisissent la meilleur (c'est une hypothèse).
Il est possible que ton processeur soit optimisé et possède un composant physique pour lui faire des divisions rapidement.
Pour conclure je dirai que à moins que ton programme occupe 90% de son temps à faire cette divisions et que le temps soit un facteur important pour ton programme, ça n'aura aucune importance.
Très souvent les programmeur font ce qui est le plus lisible et facile à comprendre pour eux.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités