IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Mode Release assez "conservateur"


Sujet :

Visual C++

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut Mode Release assez "conservateur"
    Bonjour,

    Par curiosité, j'ai un peu changé les options du mode Release. Il semble que par défaut elles ne soient pas au "mieux". J'ai ainsi activé quelques options explicitement (d'une manère générale pour favoriser la vitesse) et j'ai constaté que les binaires étaient significativement plus compact (et j'ose espérer plus rapide).

    J'en suis assez surpris. Pourquoi les options par défaut ne font pas "mieux" ?
    Quelles sont vos expériences, quelles options activez-vous en plus de celles par défaut ?
    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Quelle version de Visual, et quel genre d'options?

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    VS2005.

    Le mode Release propose l'option Maximize Speed (/O2) le reste étant en "default" ou "no".
    J'ai ajouté ceci:
    Inline Function Expansion: Only __inline (/Ob1)
    Inline Intrinsic Functions: Yes (/Oi)
    Favor Size or Speed: Favor Fast Code (/Ot)
    Whole Program Optimization: Enable link-time code generation (/GL)

    La dernière optimization doit aussi être activée dans le linker:
    Link Time Code Generation: Use Link Time Code Generation (/ltcg)

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    J'ai vu que dans certains programmes, la LTCG peut accélérer grandement les choses.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    De façon générale, les options par défaut sont celles qui sont les plus efficaces sans risquer de causer d'effets de bord. Cependant, suivant ton projet, ce qu'il fait et surtout COMMENT il le fait, ces options ne sont pas forcément optimales.

    Citation Envoyé par camboui Voir le message
    Inline Function Expansion
    Cette option va "compacter" ton exécutable en réduisant l'inlining, mais il sera un poil plus lent car le compilateur n'inlinera pas des fonctions qui pourraient l'être. C'est une optimisation en faveur de la réduction de la taille de code.

    Citation Envoyé par camboui Voir le message
    Inline Intrinsic Functions
    Ceci accélère l'exécution, mais augmente la taille de code. Peut poser des soucis parfois avec les fonctions intrinsèques utilisées dans des macros.

    Citation Envoyé par camboui Voir le message
    Favor Size or Speed
    Variable : souvent, augmente la taille du code, mais parfois la réduit.

    Citation Envoyé par camboui Voir le message
    Whole Program Optimization
    Ne marche qu'avec les librairies statiques, il n'y a que peu de bénéfices avec les DLL.
    Par contre, cela peut poser des problèmes de debug assez sévères.

    Citation Envoyé par camboui Voir le message
    Link Time Code Generation
    Idem que ci-dessus.

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par camboui Voir le message
    Pourquoi les options par défaut ne font pas "mieux" ?
    En fait, parce que 'au mieux' ne va pas toujours signifier la même chose. Le release, c'est souvent un compromis à trouver entre taille et rapidité. Et selon le projet, le curseur n'est pas toujours mis au même endroit.

Discussions similaires

  1. bloqué en mode Release
    Par matsch77 dans le forum MFC
    Réponses: 3
    Dernier message: 07/01/2004, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo