Optimisation de code

Signaler
Messages postés
1
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
23 juillet 2004
-
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005
-
Salut
J' aimerais optimiser un programme en langage C pour le faire tourner plus vite. Il est constitue principalement de conditions if-else. est ce que quelqu un pourrait me sauver ? merci de votre aide.

9 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
S'il est vraiment lent, je ne pense pas que ça vienne des 'if else'

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Dans le cas d'utilisation de boucle, les While() sont déconseillés. Mieux vaut utiliser des bouces For() qui sont nettemet plus rapides.

Le mieux est que tu mettes ton codes ici pour obtenir des critiques afin de l'améliorer.

Shell
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
pourquoi donc boucle for serait plus rapide que while ???

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Parceque la boucle while teste a chaque itération le contenu passé en paramètres... C'est ce qu'on nous a appris en cours en tous cas ...

Personnellement j'ai jamais fait de teste par rapport a ca.

Shell
Messages postés
117
Date d'inscription
samedi 12 avril 2003
Statut
Membre
Dernière intervention
8 septembre 2008

La boucle for teste aussi les conditions de ses variables en paramètre...

>:) Stéph >:)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
DeAtHCrAsH > dis toujours oui au prof mais ne rien croire, verifie le listing asm du compilo et tu verras que c'est idem, il y a forcement verif des bornes a chaque tour.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
J'ai fait un ptit desassembly pour verifier tes propos DeathCrash, et les 2styles de boucle ne different casiment pas, j'ai juste remarké que la boucle for verifiait la condition avant de commencer a incrementer le compteur de boucle (sil y en a un) contrairement a la boucle while qui elle incremente et puis compare. Donc je ne vois pas avec une simple boucle des 2types, lakel pourrait etre plus "rapide" ke l'autre.

++
Messages postés
231
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
7 juillet 2009

Hum ça dépends comment tu as codé ton prog, par exemple un code comme celui-là:
if (!strcmp(str,"Bruno")) printf("Salut nono\n");
if (!strcmp(str,"Didier")) printf("Salut dede\n");
if (!strcmp(str,"Eric")) printf("Bonjour Eric\n");
else printf("Bonjour, qui es-tu ?\n");

peut-être optimisé comme cela:
if (!strcmp(str,"Bruno")) printf("Salut nono\n");
else if (!strcmp(str,"Didier")) printf("Salut dede\n");
else if (!strcmp(str,"Eric")) printf("Bonjour Eric\n");
else printf("Bonjour, qui es-tu ?\n");

Ou alors si tu as des nombres, utilises du switch().
Messages postés
168
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
21 avril 2005

bon pour les while et le for, j'ai un contre exemple..
sur ti68k, un while est optimise en dbf dx,label alors que le for fait un subq, cmp + bcc qui est plus lent...

pour l'optimisation, si tu as que ca c'est pas sensé etre lent, sinon il faut faire un tableau trié et une recherche dichotomique
JackosKing For EvEr