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 :

Durée d'exécution étrange


Sujet :

C++

  1. #1
    Membre du Club
    Femme Profil pro
    Recherche d'orientation
    Inscrit en
    Juillet 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Recherche d'orientation

    Informations forums :
    Inscription : Juillet 2013
    Messages : 91
    Points : 57
    Points
    57
    Par défaut Durée d'exécution étrange
    Bonjour !

    Je suis en train d'apprendre à programmer en C++. Je travaille avec Code::Blocks 13.12, comme je le faisait en C.
    Je trouve étrange la durée d'exécution de mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <iostream>
    #include <string>
    using namespace std;
     
    int main()
    {
        int a(4), b(5);
        cout <<"a vaut : "<<a<<" et b vaut : "<<b<<endl;
     
        cout<<"Affectation !"<<endl;
        a=b;
        cout <<"a vaut : "<<a<<" et b vaut : "<<b<<endl;
     
        return 0;
    }
    Il dure 0,464s (moins quand je le relance mais dès que je change une valeur, rebelote !).

    Je me souviens, en C, cela durait 10 voire 100 fois moins longtemps... J'ai pourtant un PC plus performant et pour ce genre de programme... Cependant, il y a 3 changements :
    • le langage (C et C++) mais même IDE
    • PC : j'ai maintenant remplacé mon w7 par un w8.1
    • en C, j'avais exclu mes programmes de l'analyse BitDefender et aujourd'hui, en C++, je ne le fais pas avec avast! (gratuit)


    A votre avis, y a-t-il un problème ou est-ce normal ?

    Je vous remercie par avance de vos réponses !

    AdelineJ

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    à mon avis, tu te poses juste une question inutile.
    Ton programme est simpliste, et on ne sait même pas comment tu prétends calculer sa durée d'exécution.

    Entre nous, devant un cas pareil, on s'en moque un peu.

    Ton code a beau être compilé en C++, en C il serait identique aux outputs près.
    Tu as changé d'OS et peut-être que l'antivirus le bloque un peu.
    Pour peu que tu le lances en debug depuis l'IDE, jackpot.

    Mais encore une fois, c'est de l'enculage de mouche comme on dit.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    A mon avis, ton temps "d'exécution" inclue la compilation.
    C'est bien le temps qui s'affiche après l'affichage, dans la console, une fois que tu as cliqué sur le bouton "exécuter", n'est-ce pas?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre du Club
    Femme Profil pro
    Recherche d'orientation
    Inscrit en
    Juillet 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Recherche d'orientation

    Informations forums :
    Inscription : Juillet 2013
    Messages : 91
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par leternel Voir le message
    A mon avis, ton temps "d'exécution" inclue la compilation.
    C'est bien le temps qui s'affiche après l'affichage, dans la console, une fois que tu as cliqué sur le bouton "exécuter", n'est-ce pas?
    Je viens de faire :
    • compiler/exécuter (un bouton)
    • changer les valeurs
    • compiler puis exécuter (les deux boutons)


    C'est le même temps. Je me dis donc que c'est l'exécution (sinon, elle serait plus rapide vu que la compilation était déjà faite).

  5. #5
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    Peut être que ce que tu mesures n'est pas vraiment significatif.
    Que cherches-tu à mesurer et pourquoi ?
    Généralement lorsqu'on a besoin de performances, on a un code relativement long et/ou souvent exécuté et sans affichage.

  6. #6
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par Ehonn Voir le message
    Que cherches-tu à mesurer et pourquoi ?
    A mon avis rien en particulier, Code::Blocks affiche un temps d'exec et il est "étrange".

    Mais très probablement que le temps de création du processus est compté dans ces 0.4s (plus éventuellement le temps d'y attacher le débogueur, exécuter via un IDE c'est souvent synonyme de debug).

    Ou alors le temps de compilation est pris en compte dans le temps d'exécution.

  7. #7
    Membre du Club
    Femme Profil pro
    Recherche d'orientation
    Inscrit en
    Juillet 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Recherche d'orientation

    Informations forums :
    Inscription : Juillet 2013
    Messages : 91
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Ehonn Voir le message
    Que cherches-tu à mesurer et pourquoi ?
    C'est juste une comparaison avec d'anciens programmes plus complexes en C qui eux, faisaient à peine 0.010 s.

    Citation Envoyé par Iradrille Voir le message
    Ou alors le temps de compilation est pris en compte dans le temps d'exécution.
    Je ne crois pas. J'ai compilé avant de lancer l'exécution (donc en 2 étapes, 2 boutons) et l'exécution durait aussi longtemps :
    • compiler/exécuter (en même temps) : ~0,700s
    • compiler (1 bouton) : ? et exécuter (l'autre bouton) : ~0,700s

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Je ne connais pas Code::Blocks, mais par exemple avec Visual si tu fais un programme console au démarrage il va charger X dlls.

    Alors c'est sûr si tu compares avec un gcc en C qui ne charge que le minimum

  9. #9
    Membre du Club
    Femme Profil pro
    Recherche d'orientation
    Inscrit en
    Juillet 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Recherche d'orientation

    Informations forums :
    Inscription : Juillet 2013
    Messages : 91
    Points : 57
    Points
    57
    Par défaut
    Donc ce serait le langage ?

  10. #10
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Non ce n'est pas le langage, c'est l'outil que tu utilises. En tant que débutante, fait nous confiance et ne t'occupe pas de ça maintenant, tu ne t'en sentiras que mieux Il ne faut surtout pas que ça te dissuade d'apprendre le langage. L'éditeur que tu utilises, Code Blocks, est codé en C++. D'autres logiciels que tout le monde utilisent sont codés en Java qui est beaucoup plus lent que C++, or c'est assez rapide quand même dans la plupart des cas.

  11. #11
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    les lignes de code données ne sont pas assez significatives, tu ne fais juste qu'afficher des données ( 2lignes à peine)
    Les performances en exécution d'un langage sont déterminées par exemple avec de simples calculs de suite de Fibonnaci...et là il y a des boucles ce qui implique que le langage doit mettre des données sur la pile et les retirer...
    donc pour répondre à la question oui ça peut-être l'antivirus, l'OS qui met du temps à démarrer un exécutable...
    mais que tu compiles des lignes de code avec une boucle qui dure , que ce soit avec un source en C ou en C++ voire même avec du Java en mode console, il n'y aura pas de différence flagrante...
    je rejoins la réponse de Bousk concernant les mouches

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Utilise une classe/méthode pour mesurer le temps au sein même du programme.

    Ce qui t'importe devrait être le temps entre la première et dernière ligne du main, alors que là, il est probable qu'il y ait des latences préalables (chargement du programme en mémoire par exemple).
    Most Valued Pas mvp

Discussions similaires

  1. Durée d'exécution d'une procedure
    Par defluc dans le forum Langage
    Réponses: 3
    Dernier message: 14/04/2009, 19h17
  2. obtenir la durée d'exécution d'une méthode simple
    Par Benoit_T dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 27/03/2009, 11h12
  3. Réponses: 3
    Dernier message: 28/02/2007, 18h46
  4. Durée d'exécution d'une requête
    Par steve38 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 30/12/2006, 00h07
  5. [VB6] Durée d'exécution d'une procédure
    Par Peltchag dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/10/2005, 14h51

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