Bonjour,
j'aimerais savoir si les compilo C++ en général se débrouillent bien
pour optimiser les choses du type :
inline void func(const float toto=1) {
for (uint i=0; i<10000; i++)
if (toto>=1) fait_un_truc();
else fait_un_autre_truc();
}
Je ne connais pas suffisamment l'asm pour aller voir le code généré.
Est-ce que je peux esperer qu'en appelant func(), le code généré soit
plus optimisé (pas de if, car parametre par défaut connu) qu'en appelant
par exemple func(a) où a est une variable float non connue à la compil.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
David Tschumperlé
David Tschumperlé wrote:
Bonjour, j'aimerais savoir si les compilo C++ en général se débrouillent bien pour optimiser les choses du type :
inline void func(const float toto=1) { for (uint i=0; i<10000; i++) if (toto>=1) fait_un_truc(); else fait_un_autre_truc(); }
Je ne connais pas suffisamment l'asm pour aller voir le code généré. Est-ce que je peux esperer qu'en appelant func(), le code généré soit plus optimisé (pas de if, car parametre par défaut connu) qu'en appelant par exemple func(a) où a est une variable float non connue à la compil.
Merci d'avance
David.
Je me répond à moi même. J'ai finalement regardé les sources asm généré pour cette exemple, et c'est pas si dur à comprendre. Pour info :
Test avec Borland C compiler (bcc32) : il garde le if, même avec l'option d'ptimisation. Test avec g++ 3.3.1 : il vire le if si on active l'optimisation -O2, sinon il le garde (sans optim).
Donc il semble que ca optimise quand même avec un compilo récent.
David.
David Tschumperlé wrote:
Bonjour,
j'aimerais savoir si les compilo C++ en général se débrouillent bien
pour optimiser les choses du type :
inline void func(const float toto=1) {
for (uint i=0; i<10000; i++)
if (toto>=1) fait_un_truc();
else fait_un_autre_truc();
}
Je ne connais pas suffisamment l'asm pour aller voir le code généré.
Est-ce que je peux esperer qu'en appelant func(), le code généré soit
plus optimisé (pas de if, car parametre par défaut connu) qu'en appelant
par exemple func(a) où a est une variable float non connue à la compil.
Merci d'avance
David.
Je me répond à moi même.
J'ai finalement regardé les sources asm généré pour cette exemple, et
c'est pas si dur à comprendre.
Pour info :
Test avec Borland C compiler (bcc32) : il garde le if, même avec
l'option d'ptimisation.
Test avec g++ 3.3.1 : il vire le if si on active l'optimisation -O2,
sinon il le garde (sans optim).
Donc il semble que ca optimise quand même avec un compilo récent.
Bonjour, j'aimerais savoir si les compilo C++ en général se débrouillent bien pour optimiser les choses du type :
inline void func(const float toto=1) { for (uint i=0; i<10000; i++) if (toto>=1) fait_un_truc(); else fait_un_autre_truc(); }
Je ne connais pas suffisamment l'asm pour aller voir le code généré. Est-ce que je peux esperer qu'en appelant func(), le code généré soit plus optimisé (pas de if, car parametre par défaut connu) qu'en appelant par exemple func(a) où a est une variable float non connue à la compil.
Merci d'avance
David.
Je me répond à moi même. J'ai finalement regardé les sources asm généré pour cette exemple, et c'est pas si dur à comprendre. Pour info :
Test avec Borland C compiler (bcc32) : il garde le if, même avec l'option d'ptimisation. Test avec g++ 3.3.1 : il vire le if si on active l'optimisation -O2, sinon il le garde (sans optim).
Donc il semble que ca optimise quand même avec un compilo récent.