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 :

performances comparées win mingw / win visual c++ / linux


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut performances comparées win mingw / win visual c++ / linux
    en interprétant un langage de programmation spécialisé, je génère un programme qui traite un fichier séquentiel (150 caractéristiques x 750 items dans l'exemple) pour produire nouveau un fichier séquentiel, sans aucune entre/sortie ecran ...

    (je reste vague dans mes explications pour ne pas entrer dans des détails qui ne me semblent pas avoir de lien avec mon problème, mais je peux fournir tout ce qui paraitra nécessaire :-)))

    au départ, je générais du php, et je me suis tourné vers le c/c++ pour des questions de performance ...

    ce site m'a permis de choisir le c++ (utilisation de "string" & syntaxe du "cout" sans les problèmes de sprintf ...), & de me documenter puisque j'étais quasiment novice en c & totalement en c++ ... (mais pas en programmation ;-)))

    j'ai donc réécrit mes fonctions de base & généré du c++ (avec un grand plaisir & avec un résultat tout à fait satisfaisant !!!)

    mais je suis un peu perdu coté "performances" ...

    mon programme de base (en php) génère donc toujours un script php & un source c++ compilé sous windows par MinGW, qui effectuent un traitement identique ...

    temps d'execution sur mon portable windows (c'est un ordre d'idée, obtenu par 4 ou 5 essais successifs) :
    - php : 13 secondes
    - c++ : 8.5 secondes

    jusqu'ici, je me dis que maintenant que ça donne un résultat correct, il va falloir optimiser mon code :-)))

    mais quand j'essaie sur un petit serveur débian, j'obtiens :
    - php : 19 secondes
    - c++ : 2.5 secondes

    alors, ne comprenant plus grand chose, je compile le programme c++ avec Visual C++, et j'obtiens, toujours sur mon portable :
    - c++ : 3.5 secondes

    je ne comprends pas ce qui peut provoquer de tels écarts ???

    quelqu'un a une idée ???

    très amicalement mbp

  2. #2
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Salut !

    Quelles sont tes options de compilation ? Release ? Debug ? O2 ? 03 ?
    En C++, il faut faire attention à tout ça. Avec Visual tu as des options en plus genre le choix de la CRT (C Runtime Library). /MD en Release c'est bien en général.
    Ce qu'il te faut, c'est Release avec les optimisations activées au maximum !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    pour MinGW & linux, j'ai essayé -O2 ...
    ça donne 4 ou 5% de moins sur windows, mais avec un temps de compilation beaucoup plus important ...
    et 20% de PLUS sous linux :-)))

    sur visual C++, je suis en release, sans entêtes pécompilées & avec les options par défauts en "optimisation" ...

    en fait, j'ai 2 interrogations presque distinctes ...
    - en mingw / linux, le coeff de x1.5 en php me semble donner une idée des "puissances" respectives des machines, alors pourquoi le /3.5 en C++ ??
    - en C++, sur une même machine & avec le même programme, pourquoi un coeff de /2.5 entre MinGW & Visual C++

    très amicalement mbp

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par mbport Voir le message
    - en mingw / linux, le coeff de x1.5 en php me semble donner une idée des "puissances" respectives des machines, alors pourquoi le /3.5 en C++ ??
    Même version de gcc et mêmes options de compilation dans les deux cas ?

    Citation Envoyé par mbport Voir le message
    - en C++, sur une même machine & avec le même programme, pourquoi un coeff de /2.5 entre MinGW & Visual C++
    Parce que deux compilateurs différents ne vont pas donner le même exécutable. En particulier les optimisations effectués par différents compilateurs ne sont pas les mêmes et certaines sont plus efficaces que d'autres.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    windows : g++ (GCC) 3.4.5 (mingw-vista special r3)
    linux : g++ (Debian 4.3.2-1.1) 4.3.2
    mêmes options (sans -O2 comme indiqué plus haut)
    (il doit s'agir de versions récentes dans les 2 cas, sauf erreur de ma part ...)

    sinon, je suis bien sur d'accord avec la 2ème "explication", mais le delta me parait si énorme (un coef de 2.5 !!!) que je me demandais s'il n'y avait pas d'autres "facteurs" possibles ...

    (- 5% pour l'optim -O2 ou même + 20% pour la même sous linux me paraissent "acceptables" ... mais là ... on change à mon sens totalement d'échelle !!!)

  6. #6
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par mbport Voir le message
    windows : g++ (GCC) 3.4.5 (mingw-vista special r3)
    linux : g++ (Debian 4.3.2-1.1) 4.3.2
    mêmes options (sans -O2 comme indiqué plus haut)
    (il doit s'agir de versions récentes dans les 2 cas, sauf erreur de ma part ...)
    gcc 3.4.5 date de novembre 2005 et gcc 4.3.2 d'aout 2008.
    La dernière version de gcc est la 4.5.1.

    Entre les deux versions il y a 3 ans, plusieurs release et surtout un changement majeur de version. Qu'il y ait des différences importantes n'est pas vraiment surprenant.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    au temps pour moi ;-)))

    je n'avais pas vu ça :
    The mingw-get installer currently installs only GCC 3. You will get GCC 3 using this method. If you want to install the latest GCC release, use the Manual Installation method above.
    sur www.mingw.org ...

    comme l'install datait de 3 semaines, je pensais avoir la dernière version !!!

    je vais donc installer manuellement & retester :-)))

    merci !!!

    très amicalement mbp

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    après installation manuelle de MingW / gcc 4.5.0, je tombe à 2.5 secondes :-)))

    problème résolu !!!

    et encore merci ;-)))

    très amicalement mbp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Creation DLL win 32 sous Visual Studio 08
    Par Yo_du_06 dans le forum Visual C++
    Réponses: 8
    Dernier message: 10/03/2009, 19h19
  2. [portabilité] ok sous Win, mais pas sur Mac/linux
    Par absolut75 dans le forum Général Java
    Réponses: 11
    Dernier message: 11/10/2006, 18h14
  3. [D5][Win CE]WIN 2000 vers WIN CE
    Par probo dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 20/05/2005, 17h48
  4. [Mandrake 10 + win XP] Acces Serveur web linux via XP
    Par bobunny dans le forum Windows XP
    Réponses: 9
    Dernier message: 10/09/2004, 16h15
  5. PB d'installation d'UDF avec Win 2000/Win XP et IB 6.0.1
    Par Etienne Bar dans le forum InterBase
    Réponses: 11
    Dernier message: 28/05/2004, 11h39

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