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

C++ Discussion :

am�lioration de la compilation


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    168
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 168
    Par d�faut am�lioration de la compilation
    Bonjour � tous,

    Je code sur dev c++ et j'aurais une petite question : j'ai fait un tout petit programme qui fonctionne tr�s bien le seul "probl�me" se trouve au niveau de la taille du .exe ... 489ko contre 2ko pour la source.

    Comment faire pour am�liorer cela (diminuer la taille du .exe) et arr�ter d'afficher la fen�tre d'invite de commande par la m�me occasion lors de l'ex�cution car j'en ai aucune utilit� ? Est-ce que quelqu'un aurait de la doc ?

    merci d'avance.

    ps.: j'ai regarder dans les options du compilateur et �a n'a pas changer grand chose (466 ko) en mettant 'yes' � 'meilleures optimisation'.

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par d�faut
    Je suppose que tu utilises Visual C++.
    "Meilleure optimisation" n'a rien � voir avec la taille de l'exe (au contraire, �a pourrait m�me l'agrandir, ce qui ne signifie pas que tu dois l'enlever ). Le meilleur moyen est de passer en mode runtime et non pas debug, il y a une petite list box en haut � gauche pour �a.
    Pour la fenetre il faut aller dans la fen�tre de param�trage de ton projet, il y a une option pour �a mais je ne sais plus o�.

    Edit: oups, j'avais pas vu pour Dev C++, mais les conseils valent aussi

  3. #3
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Il est tout � fait logique que l'ex�cutable fasse quelques centaines de ko (ce qui n'est, sommes toutes, rien du tout) alors que le code source tient sur un ou deux ko...

    En effet, la seule directive d'inclusion d'un fichier d'entete (qui ne prend que quelque caract�res) aura pour effet... de provoquer l'insertion dans l'ex�cutable de l'ensemble des fonctions que peut d�clarer le fichier d'entete (y compris des fonctions inutilis�es du fichier d'entete)

    Et comme il est fr�quent qu'un fichier d'entete se base sur d'autres fichiers d'entete pour etre en mesure de fournir les fonctions qui lui sont propres... la simple inclusion de iostream, pour le tout classique "hello world", produira en d�finitive un ex�cutable de ... 505 ko (sous code::blocks/mingw, sans symboles de debuggage) (pour un code source de...97 octets � peine )

    Rien que pour te donner une id�e, iostream, qui te permet juste de gerer les flux d'entr�e/sortie inclut:
    • istream
    • ostream
    • c++config.h


    istream (et sans doute aussi ostream) inclut
    • ios
    • limits


    ios, quant � lui, inclut
    • iosfwd
    • exceptions
    • char_traits.h
    • cstdio
    • localefwd.h
    • iosbase
    • streambuf
    • basic_ios.h

    et je suis sur que l'on pourrait continuer comme cela, avec, au minimum tous les fichiers qui n'ont pas l'exension .h, et avec une bonne partie de ceux qui l'ont...

    L'astuce, c'est que tous ces fichiers vont d�clarer quelques fonctions (et provoquer l'insertion de ces fonction dans l'ex�cutable r�usltant), qui seront n�cessaire � la gestion des flux d'entr�e/sortie, que tu n'auras peut �tre meme pas l'impression d'utiliser ces fonctions, parce que tu appelle une fonction qui en appelle deux autres, qui elles meme en rappelleront... et feront en sorte que tu ne puisse pas envisager de te passer de l'un d'eux...

    Ceci dit, une fois que ton code est correct, tu peux te rendre dans les options de compilations et demander � effectuer une compilation finale sans les informations de d�buggage (615 ko pour le hello world avec informations de debuggage contre 505 sans )
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  4. #4
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Ben d�j� la biblioth�que standard C++ est li�e statiquement, donc rien que �a, �a prend de la place...

  5. #5
    R�dacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par d�faut
    Comme �a n'a pas �t� dit, pour optimiser la taille des fichiers ex�cutables avec gcc, c'est l'option : -Os (-O3 �tant pour une optimisation vitesse (mais �ventuellement plus grosse taille).

    Sur les syst�mes actuelles (genre pas un micro-contr�leur o� la taille m�moire peut �tre vite limit�e), c'est plut�t -O3 qu'on utilise

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    168
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 168
    Par d�faut
    merci ... pour la taille c'est ok mais pour la fen�tre je trouve rien dans les volets du panneau d'options du projet. Est-ce que quelqu'un pourrait me dire dans quel volet est l'option et me donner son nom si elle n'est pas explicite ?

    merci d'avance

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    168
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 168
    Par d�faut
    Merci � vous deux. J'ai cherch� dans les diff�rents volets des options du projet mais rien ne semble correspondre � runtime. Quel est le terme utilis� par dev c++ ? et o� se trouve l'option qui permet de ne pas afficher la fen�tre d'invite de commande suite � l'ex�cution ?

    merci d'avance.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [GWT2.6.1] Am�lioration du code compil�
    Par valkeke dans le forum GWT et Vaadin
    R�ponses: 2
    Dernier message: 24/10/2014, 16h45
  2. R�ponses: 0
    Dernier message: 26/07/2014, 16h35
  3. [WD17] Am�liorer les performances d'un batch de compilation
    Par Trs80M1 dans le forum WinDev
    R�ponses: 0
    Dernier message: 18/02/2013, 11h08
  4. Comment am�liorer le temps de compilation pour C/C++ ?
    Par Hinault Romaric dans le forum C
    R�ponses: 18
    Dernier message: 11/01/2013, 21h02
  5. R�ponses: 45
    Dernier message: 21/01/2011, 18h25

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