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 :

Le C++ se compile-t-il trop lentement ? Oui répond Walter Bright, un développeur de compilateur


Sujet :

C++

  1. #21
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 665
    Points
    1 665
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Il n'est pas "que" rapide : une compilation de plusieurs heures sous Delphi ça n'existe pas ! Et c'est ce rapport gain de compilation/perte en déclaration qui me fait préférer de loin le Pascal aux autres langages compilés.
    Et quand on est habitué à cette compilation ultra rapide, ça fait comme un rappel d'élastique quand on passe à un autre EDI. J'ai essayé d'autres EDI, mais c'est désespérant.

    Dommage qu'on ne puisse pas parler de Green It pour ce genre d'usage.

  2. #22
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    février 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : février 2010
    Messages : 64
    Points : 53
    Points
    53
    Par défaut make / ant
    On ne recompile pas tout le bordel à chaque fois non plus
    Je me souviens d'un projet de 100 000 lignes de C++, bien découpé, modulaire, avec des moteurs et des plugins, c'était très rare qu'on recompile tout !
    Tellement rare que le problème de vitesse de compilation ne m'est jamais apparu

    Sinon la source c'est Dr Dobbs, pas Bobbs ...

  3. #23
    Membre expérimenté Avatar de chaplin
    Profil pro
    Inscrit en
    août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 1 215
    Points : 1 665
    Points
    1 665
    Par défaut
    Si un petit malin vire le fichier contenant le source et qu'il ne reste que l'unité compilé correspondant, parfois ça peut être utile de recompiler tout le projet pour éviter le sabotage d'une personne tierce, voir de recharger le projet complet pour éviter qu'un petit malin modifie les fichiers à son insu, c'est du vécu.

  4. #24
    Membre confirmé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 232
    Points : 530
    Points
    530
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Malgré ça, Delphi c'est mort et quasiment enterré. Cherchez l'erreur!
    Vraiment ? Je vois des IDE qui sont morts . C'est vrai qu'il y a eu un déclin, mais de là à dire que c'est mort ; on peut aussi parfois lire, le C++ c'est mort, maintenant c'est - Java, C#, D, ... (faites votre choix).

    Citation Envoyé par vanquish Voir le message
    à de nombreux aller/retour entre les sections interface/implémentation
    Ben en C++ on fait même "pire", interface dans les .h et implémentation dans le .cpp.

    Le modèle de compilation du C++ vient de son héritage du C.

    Lors de la phase génération de code, les différentes unités de compilations s'ignorent complètement. Pour utiliser un élément d'une autre unité, on déclare juste l'existence du symbole (prototype pour une fonction / extern pour une variable).
    C'est ensuite à l'édition des liens de s'assurer que :
    - le symbole existe
    - une seule unité le contient
    Pour ne pas à avoir à recopier tous les symboles qu'implémente une unité, le principe des header à été mis en place : les symboles sont regroupés dans un fichier qui sera TEXTUELLEMENT recopié par le préprocesseur dans chaque unité de compilation l'incluant.
    Du coup, l'on rajoute bien souvent beaucoup plus de symboles que nécessaire dans les nos unités (que le compilateur se fera une joie de reparser dans chaque unité de compilation). Si l'on se contente de prototypes et de déclarations externes, cela reste largement acceptable, ces derniers n'entrainant pas en eux-même de génération de code.

    Sauf que le C++ à apporté beaucoup de fonctionnalités qui ont modifié ce mécanisme. Les fonctions inline et les templates, dont le code doit être connu à la compilation - les unités s'ignorant dans cette phase -, ont cassé la règle de l'unicité de l'unité contenant un symbole.

    Résultat : un même code sera dans plusieurs unités et subira plusieurs fois certaines étapes de la compilation.
    Ce mécanisme de préprocesseur à aussi permis de faire des choses intéressantes, cf. boost preprocessor, ayant elles même entrainées un nouveau surcoût (preprocessing plus long, génération de N spécialisations templates, ...).

    La répétition du code dans les unités a aboutie à les rendre énormes ; et comme cela a déjà été dit dans la discussion, le langage n'est lui même pas des plus faciles à parser, ce qui n'a pas arrangé les choses.

    Aujourd'hui, ce simple code
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "stdafx.h"
    #include <iostream>
     
    int _tmain(int argc, _TCHAR* argv[])
    {
       using namespace std;
       cout << "hello world";
       return 0;
    }
    donne sous VS 2005, après préprocesseur, un fichier de 565 Ko (54 458 lignes , mais beaucoup de lignes vides) et sous VS 2010 663 Ko (74 899 lignes).

    En rajoutant #include <vector>, <map>, <sstream>, je passe à 0,98 Mo (113 900 lignes). Je n'ose pas imaginer avec les bibliothèques de boost ...

    Si il n'est pas de envisageable de casser ce mécanisme d'inclusion, certains éléments de la nouvelle norme à venir vont tout de même permettre un allègement du traitement.

  5. #25
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 951
    Points : 1 324
    Points
    1 324
    Billets dans le blog
    3
    Par défaut
    Personnellement j'utilise CBuilder et Visual studio et le temps de compilation ne m'a jamais paru excessif même avec des projets de 20 000 lignes codes.
    D'autre part quand on parle de vitesse, il faut toujours prendre en considération la machine et les OS. Une nouvelle génération plus rapide et avec plus de mémoire apparaît presque tous les 6 mois. Alors si ça compile trop lentement attendez 6 mois et changez de machine
    Malgré ça, Delphi c'est mort et quasiment enterré. Cherchez l'erreur!
    Alors là pas d'accord du tout voire l'activité Delphi sur le site.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  6. #26
    Futur Membre du Club
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Avez vous essayé le langage Forth (rapidité, souplesse, compacité, étherogénité, ...) pour faire du système c'est le top non? Dommage qu'il soit si peu connu.

  7. #27
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : mars 2009
    Messages : 349
    Points : 537
    Points
    537
    Par défaut
    Le top pour du système c'ets le D

  8. #28
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 951
    Points : 1 324
    Points
    1 324
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Infoly Voir le message
    Avez vous essayé le langage Forth (rapidité, souplesse, compacité, étherogénité, ...) pour faire du système c'est le top non? Dommage qu'il soit si peu connu.
    Je ne connais pas mais j'ai l'intime conviction qu'il n'existe aucun langage parfait. C'est pourquoi j'essaye toujours d'utiliser le langage le plus adapté au projet à réaliser. Au contraire de certain de mes collègues qui depuis qu'ils ont découvert Excel font tout avec (même le café )
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  9. #29
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 214
    Points : 26 601
    Points
    26 601
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Je ne connais pas mais j'ai l'intime conviction qu'il n'existe aucun langage parfait. C'est pourquoi j'essaye toujours d'utiliser le langage le plus adapté au projet à réaliser. Au contraire de certain de mes collègues qui depuis qu'ils ont découvert Excel font tout avec (même le café )
    hihi ça me rappelle une très vielle discussion sur un autre forum

    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    //----------------------------------------------------------------------------//
    // From nzn.fr.delphi
    //Salut kloo. Delphi sachant tout faire, pourrait-il déclencher toutes les
    //demi-heures l'algorithme suivant :
        While Cafetiere.NbDoseEau < 3 Do Begin
          //  mettre une dose d'eau dans la cafetière
            Cafetiere.NbDoseEau := Cafetiere.NbDoseEau+1
        End;
        While Cafetiere.NbDoseCafe < 3 Do Begin
          //  mettre une dose de café dans la cafetière
            Cafetiere.NbDoseCafe := Cafetiere.NbDoseCafe+1
        End;
        If Not Cafetiere.Active Then Cafetiere.Open;
        Repeat
        Until Cafetiere.Eof;
        Cafetiere.Close;
        Cafetiere.Tasse_BringToFront_to_Joel
     
    //kloo a écrit dans le message ...
    //>>Est-il possible de jouer des Real VIDEOS sous Delphi ?
    //>
    //>
    //>oui
    //>
    //>puisqu'on peut tout faire sous delphi :-))
    //>
    //>comment ? la n'est pas la question ;-)))))))
    //>
    //>kloo, bruit en tout genre
    //>
    //----------------------------------------------------------------------------//

    ceci est le message d'origine que j'ai transformé en vraie application Delphi sans changer une ligne

    CAFE.ZIP

    Sinon c'est sans conteste PHP qui propose les temps de compilation les plus courts !!!!
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #30
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 951
    Points : 1 324
    Points
    1 324
    Billets dans le blog
    3
    Par défaut
    Ah je regrette profondément de n'avoir pas eu l'idée de ce programme à une époque ou un collègue découvrait l'informatique et se demandais pourquoi l'ordinateur ne pouvait pas faire ça. Question à laquelle je répondait soit:
    • ca n'a pas été programmé
    • C'est un ordinateur pas un être humain extra sensoriel
    • Tu veux pas qu'il fasse le café en plus!!

    Il faut dire qu'il était passé de la calculatrice à ce qu'il croyait être les ordinateurs de StarFleet

    Citation Envoyé par Paul TOTH Voir le message

    Sinon c'est sans conteste PHP qui propose les temps de compilation les plus courts !!!!
    Pas d'accord c'est le basic sur apple II

    Mais bon on s'éloigne du sujet
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  11. #31
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Idelways Voir le message
    « J'espère que des efforts seront faits pour résoudre le problème », même si cela devrait prendre « au moins 10 ans » et poser des problèmes de rétrocompatibilité.
    Des efforts sont faits pour résoudre le problème. Il s'agit des modules (et de la directive « import »), une proposition faite à la base pour C++0x mais pas assez mûre pour y être intégrée. Heureusement, on ne devra probablement pas avoir à attendre C++2x pour les voir arriver :
    Heading for a separate TR
    These topics are deemed too important to wait for another standard after C++0x before being published, but too experimental to be finalised in time for the next Standard. Therefore, these features will be delivered by a technical report at the earliest opportunity.
    Source : http://www.open-std.org/jtc1/sc22/wg...009/n2869.html

    Voici le PDF de la proposition : http://www.open-std.org/jtc1/sc22/wg...2007/n2316.pdf

    Un jour, on pourra écrire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import std; // Module import directive.
    int main() {
        std::cout << “Hello World\n”;
    }
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  12. #32
    Membre confirmé

    Profil pro
    Inscrit en
    mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : mars 2009
    Messages : 349
    Points : 537
    Points
    537
    Par défaut
    C'est drôle comme la syntaxe du c++ évolue pour ressembler au D. Sauf qu'en D ça y est déjà

  13. #33
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 288
    Points
    3 288
    Par défaut
    D'après le bouquin de D que je lis en ce moment, je dirais plutot que D a intégré des concepts basiques qui sont dans le nouveau standard C++. Mais ensuite l'essentiel des features reste assez différent (de ce que j'ai lu jusqu'ici).

  14. #34
    Membre éclairé
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : septembre 2008
    Messages : 680
    Points : 858
    Points
    858
    Par défaut
    @bioinfornatics
    Il y a quelque temps, j'ai ouvert un sujet concernant la légitimité de D à être un digne successeur du C++ : http://www.developpez.net/forums/d78...ute/langage-d/
    On pourrait peut-être continuer le débat sur cet autre topic ?
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  15. #35
    Membre régulier
    Homme Profil pro
    Inscrit en
    mars 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : mars 2011
    Messages : 52
    Points : 100
    Points
    100
    Par défaut Quid de l'utilisation des disques durs ?
    Bonjour à tous !

    Bon, je suis loin d'être un programmeur aussi chevronné que vous, donc mon commentaire vaut ce qu'il vaut !

    Je m'étais posé le genre de questions qu'on trouve dans l'article quand j'avais essayé de recompiler le source d'OCaml. Il y a aussi une utilisation du compilateur ocamlc dans le script, mais j'imagine qu'il est victime du même problème que C++ (?).

    Juste pour dire que je suis surpris de ne pas voir mentionné dans la discussion le fait que les compilations sous make des programmes C++ imposent des lectures/écritures en pagaille sur le disque. Je m'étais dis que ça gênait beaucoup mon système dans son travail de compilation...

    J'avais fait une erreur d'analyse selon vous ? Essayer d'organiser les flux de fichiers lors de la compilation (sources+headers -> objet -> exécutables) sur deux disques durs (après tout, ce n'est plus si rare maintenant que tout le monde a besoin d'un disque externe de stockage des vidéos/musiques) ne serait-il pas une amélioration plus fondamentale que ce problème de recompilations des headers ?

    Citation Envoyé par Infoly Voir le message
    Avez vous essayé le langage Forth (rapidité, souplesse, compacité, étherogénité, ...) pour faire du système c'est le top non? Dommage qu'il soit si peu connu.
    Je n'ai jamais programmé en Forth, mais j'admire ce langage depuis si longtemps... Comment t'en sors-tu avec les programmation orientée objet ?
    J'avais écrit dans une autre discussion que, pour moi, on retrouvait beaucoup de l'esprit de Forth dans Java, mais ça n'a pas suscité beaucoup de réactions...

  16. #36
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : novembre 2005
    Messages : 2 898
    Points : 7 688
    Points
    7 688
    Par défaut
    Citation Envoyé par Franck Z Voir le message
    J'avais fait une erreur d'analyse selon vous ? Essayer d'organiser les flux de fichiers lors de la compilation (sources+headers -> objet -> exécutables) sur deux disques durs (après tout, ce n'est plus si rare maintenant que tout le monde a besoin d'un disque externe de stockage des vidéos/musiques) ne serait-il pas une amélioration plus fondamentale que ce problème de recompilations des headers ?
    Tu peux toujours te fabriquer un disque virtuel en RAM et effectuer ta compilation sur celui-ci si tu penses que ça va t'aider. Les soucis de lenteur de compilation sont principalement dus à l'analyse des sources qui est plus complexe que d'autres langages.

    En revanche, je profite de ton nécropostage pour relancer la discussion, est-ce que c++ 1x aura effectivement un impact positif sur le temps de compilation comme l'espérait Walter Bright?

  17. #37
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    novembre 2003
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : novembre 2003
    Messages : 951
    Points : 1 324
    Points
    1 324
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Franck Z Voir le message
    Bonjour à tous !

    Bon, je suis loin d'être un programmeur aussi chevronné que vous, donc mon commentaire vaut ce qu'il vaut !

    Je m'étais posé le genre de questions qu'on trouve dans l'article quand j'avais essayé de recompiler le source d'OCaml. Il y a aussi une utilisation du compilateur ocamlc dans le script, mais j'imagine qu'il est victime du même problème que C++ (?).

    Juste pour dire que je suis surpris de ne pas voir mentionné dans la discussion le fait que les compilations sous make des programmes C++ imposent des lectures/écritures en pagaille sur le disque. Je m'étais dis que ça gênait beaucoup mon système dans son travail de compilation...

    J'avais fait une erreur d'analyse selon vous ? Essayer d'organiser les flux de fichiers lors de la compilation (sources+headers -> objet -> exécutables) sur deux disques durs (après tout, ce n'est plus si rare maintenant que tout le monde a besoin d'un disque externe de stockage des vidéos/musiques) ne serait-il pas une amélioration plus fondamentale que ce problème de recompilations des headers ?
    Moi je dirais bien que le temps de compilation c'est comme le prix de la boite de sauce tomate au supermarché. Il faut comparer ce qui est comparable. Il faudrait sur une même machine compiler un même code comptant le même nombre de lignes et c'est pas simple.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  18. #38
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    décembre 2004
    Messages
    2 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : décembre 2004
    Messages : 2 036
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonsoir,

    Tout ceci est très certainement très intéressant, et mon admiration envers ceux qui maitrisent ce langage ne faiblit pas.
    Je me pose une question tout de même au sujet du "problème" soulevé - car je ne suis pas sur d'ailleurs de l'avoir vu clairement évoqué (et si oui, milles excuses), hormis par celui qui a fait l'étude:
    - y a t il une "vraie" lenteur lors de la compilation de projets importants/complexes/lourds (appelez ca comme vous voulez) en C++ ?
    - cette lenteur est elle un vrai problème pour ceux qui travaille avec du C++ ?
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  19. #39
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 288
    Points
    3 288
    Par défaut
    Les accès multiples aux fichiers est en effet une grande source de problème de performance de compilation en C++. En fait, c'est plutot le fait que tout soit séparé (en cpp) qui rends la compilation compliquée.

    Une technique qui commence de plus en plus à faire parler d'elle pour drastiquement réduire les temps de compilation : unity build (http://stackoverflow.com/questions/8...f-unity-builds)

    L'idée globalement est de générée une nombre limité de .cpp (genre un seul) qui contient tout le code source du module (application ou librarie) et qui est compilé du coup en une fois.

    Voir le liens pour les contre-couts.

    Ca serait cool que des systèmes de build intègrent une fonction automatique pour faire ça de base. C'est utile pendant les développement.

  20. #40
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2004
    Messages : 1 717
    Points : 3 288
    Points
    3 288
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Bonsoir,

    - y a t il une "vraie" lenteur lors de la compilation de projets importants/complexes/lourds (appelez ca comme vous voulez) en C++ ?
    J'ai bossé sur un projet avec GUI et beaucoup de metaprog. qui compilait en 1h30 sur un serveur assez puissant qui nous laissait compiler avec 3 jobs (sous gcc)

    Ogre (http://ogre3d.org) compile en 30 minute sur ma tour perso(AMD X2 4200+, bicore vieux de 7-8 ans), 15 minutes sur mon portable (CoreI7 QuadCore vieux de moins d'un an). Ogre ne fait QUE du rendu graphique. Mon projet sous Ogre, avec toutes les bibliothèques comprises, compile en 30 minutes sur mon portable, à froid.

    Lorsque je développe, j'ai du couper le projet en beaucoup de modules (dll+application) pour limiter les compilations longues.

    Au boulot, c'est pire (parcequ'on a que des bibliothèques statiques et du template a gogo).

    Donc oui le problème existe.

    - cette lenteur est elle un vrai problème pour ceux qui travaille avec du C++ ?

    Evidement!!!

    Admettons que tu fasses une modification dans un header, par exemple ajuster la valeur d'une constante PI.

    Tous les cpp qui, directement ou indirectement, incluent ce header seront recompilés. Tous dépends de l'utilisations masi dans certains cas ça veut dire la recompilation de toute l'application. Maintenant imagine que tu fasses une petite modif et qu'il te faille 10, 20 minutes pour voir le résultat... tu vas y perdre des journées entières. Peut être même que tu vas aller moins vite à résoudre des problèmes parcequ'entre chaque compilation tu auras oublié des détails du contexte du bug.

    Enfin bref, c'est un problème crucial, le plus gros en C++ à mon avis. J'espère que le système de Modules sera vite mis en place sinon ça va être impossible même avec des machines plus puissantes, parceque la complexité des applications suit les performances.

Discussions similaires

  1. [VB.NET]Mes controles graphiques se redessinent trop lentement
    Par noogatix dans le forum Windows Forms
    Réponses: 34
    Dernier message: 04/10/2012, 20h11
  2. Réponses: 60
    Dernier message: 15/04/2011, 06h44
  3. Erreur compilation: fichiers Include trop nombreux
    Par Pierrick584 dans le forum C++
    Réponses: 5
    Dernier message: 21/10/2006, 00h24
  4. [DOS] le texte s'affiche trop lentement
    Par maxonman dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 09/12/2005, 14h53
  5. Réponses: 8
    Dernier message: 20/05/2005, 20h37

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