Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3660 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Programmation en C

n°286061
pains-aux-​raisins
Fatal error
Posté le 09-10-2004 à 15:31:28  profilanswer
 

Reprise du message précédent :

alerim a écrit :

Il devait parler de cas où ça ne fait pas de différence a priori comme dans :
 

for (i = 0; i < j; ++i) { ... }


 
par exemple. En C++ on préfère ++i à i++ si la valeur de i n'est pas utilisée dans l'expression car le jour où "i" est un objet autre qu'un simple entier, on peut avoir une perte de performance non négligeable. Mais sinon, dans le cas de C en particulier, ça ne fait pas différence.


L'assembleur n'est pas (plus) mon truc, mais la literrature informatique peut être intéressante. Dans l'art de la programmation, il y a des chapelles... A savourer !
 
Best Practices for Programming in C : http://www-106.ibm.com/developerwo [...] nxw02BestC
 
Morceau choisi :

Citation :


#  Embedded statement
 
There is a time and a place for embedded assignment statements. In some constructs there is no better way to accomplish the results without resulting in bulkier and less readable code:
 
 
 while ((c = getchar()) != EOF) {
     process the character
 }
 
Using embedded assignment statements to improve run-time performance is possible. However, you should consider the tradeoff between increased speed and decreased maintainability that results when embedded assignments are used in artificial places. For example:
 
 
 x = y + z;
 d = x + r;
 
should not be replaced by:
 
 
 d = (x = y + z) + r;
 
even though the latter may save one cycle. In the long run the time difference between the two will decrease as the optimizer is enhanced, while the difference in ease of maintenance will increase.


 
Plus en rapport avec l'opérateur ternaire :
 
Optimal C Constructs for 8051 Microprocessors : http://www.embedded.com/story/OEG20021015S0046
 
Où l'auteur dit :

Citation :


The ternary operator is terse, slightly cryptic and a favorite of mine. Examination of K&R shows that the authors use the ternary operator very liberally indeed. But does the ternary operator actually accomplish anything? Well, the answer with the Keil compiler is an emphatic no, since it produces larger code and longer execution time in every test case I tried. Listing 5 shows Test Case 1 of the decision making project.


 
Conclusion : l'opérateur ternaire est à utiliser en connaissance de cause. :)
 
Bon WE


Message édité par pains-aux-raisins le 09-10-2004 à 15:32:23
mood
Publicité
Posté le 09-10-2004 à 15:31:28  profilanswer
 

n°286064
printf
Baston !
Posté le 09-10-2004 à 15:40:53  profilanswer
 

Citation :

l'opérateur ternaire est à utiliser en connaissance de cause.


 
Le sage a parlé :jap: :D
Toute construction est bien évidemment à utiliser en connaissance de cause.

n°286068
pains-aux-​raisins
Fatal error
Posté le 09-10-2004 à 15:54:20  profilanswer
 

J'utilise également le ( ? : ), qu'est-ce que tu voulais que je dise d'autre ? :D
 
edit : n'empêche que ca va mieux en le disant :jap:


Message édité par pains-aux-raisins le 09-10-2004 à 15:59:35
n°286158
Chips
Posté le 10-10-2004 à 00:17:16  profilanswer
 

si on réfléchit à la structure la plus efficace en asm (eval condition, saut vers le code avec chargement tab[i] et incrementation ou decrementation), c'est effectivement la 1ere solution qui s'en approche (avec if else).
 
Utiliser l'opérateur ternaire, risque d'inciter le compilo à générer un code qui évalue des elements de l'affectation avant d'avoir evalué les conditions. D'ou une monopolisation de registres donc risque de stockage de valeur dans la pile (spill code) etc...


Message édité par Chips le 10-10-2004 à 00:41:44
n°286207
printf
Baston !
Posté le 10-10-2004 à 11:50:17  profilanswer
 

Il me semble avoir cité un passage de la norme et un bout de code de GCC (voir aussi simplify_ternary_operation() dans simplify-rtx.c). Donc après avoir émis des hypothèses sur le comportement du compilateur, la moindre des choses est d'aller vérifier si les dites hypothèses s'avèrent exactes (ce qui n'est pas le cas) :o

n°286224
Chips
Posté le 10-10-2004 à 13:25:16  profilanswer
 

il y a pas que gcc dans la vie... hors il semble bien que certains compilo genere un code - optimise...

n°286234
Dion
Acceuil
Posté le 10-10-2004 à 14:22:55  profilanswer
 

pains-aux-raisins a écrit :

c'est comme l'histoire du ++i meilleur que i++, enfin, bon je m'égare là :whistle:


 
surtout que certains compilo l'optime ça ;d

n°286235
Dion
Acceuil
Posté le 10-10-2004 à 14:24:50  profilanswer
 
n°286236
Dion
Acceuil
Posté le 10-10-2004 à 14:26:59  profilanswer
 

Chips a écrit :

il y a pas que gcc dans la vie... hors il semble bien que certains compilo genere un code - optimise...


 
Enfin d'un autre cote, notre cher auteur de topic en est à ecrire des macros, donc l'architecture des compilos, ca lui semble loin je pense :d

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Recherche Stagiaire programmation site comparatif en ligneCours municipaux adultes de Paris , Programmation C
cours de programmation (débutant) dut ogpProgrammation système et débouchés
[Offre] Job d'été: programmation VB sous Excel, OiseDESS imagerie numérique et programmation 3D
[ RECHERCHE STAGE ] Urgent !!! programmation, reseaux[ Recherche Stage ] Orienté programmation
Recherche satigaire programmation [STRASBOURG] 
Plus de sujets relatifs à : Programmation en C


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)