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 :

Temps d'execution d'un programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Par défaut Temps d'execution d'un programme
    Salut les gars,
    J'essaie d'afficher le temps d'execution de mon programme. Pour ce faire j'ai utilisé la function difftime au sein de ma "main" de la façon suivante :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
     
    #include "./Game/Game.h"
    #include "./Exceptions/GameOverException.h"
     
    time_t aStart, aEnd; ///@@@ time performance
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
      srand (time(NULL));
     
      Game * aGame = new Game(); //setting of game by default
     
    try
    {
     
    	time (&aStart); ///@@@ time performance
     
      	aGame->run();
     
     
    }
     
    catch (GameOverException & aGameOverException)
    {
    	std::cout<<aGameOverException.getErrorMessage()<<endl;
    	delete aGame;
     
    	time(&aEnd);///@@@ time performance
    	//std::cout<<difftime(aEnd, aStart)<<" sg"<<std::endl;///@@@ time performance
    	printf ("The process takes %.4lf seconds \n",difftime(aEnd, aStart));
    }
     
      return EXIT_SUCCESS;
    }
    Sachant que le program doit s'arreter dans tous les cas (bonne et mauvaise execution) par le lancement d'une exception qui va être rammassée dans le bloc "catch".

    Le resultat qui s'affiches est toujours "0.0000 sg".

    Comment faire ?

    Merci !!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Si ton PC est une bête de course ou que ton programme ne fait pas grand chose, les 100 microseconds de précision que tu affiches ne sont peut-être pas suffisantes?

    Carl

  3. #3
    Membre confirmé Avatar de donkeyquote
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 195
    Par défaut
    A vraie dire mon ordi a environ 4 ou 5 ans ...
    Et honetement le temps d'execution doit être significatif étant donné que je fais assez d'allocations et desallocations de mémoire entre les deux points sur lesquels j'ai essayé de mettre des repères.

    Quand je passe Valgring sur mon executable ... je trouve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ==5783== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 17 from 1)
    --5783--
    --5783-- supp:   17 dl-hack3
    ==5783== malloc/free: in use at exit: 0 bytes in 0 blocks.
    ==5783== malloc/free: 11,279 allocs, 11,279 frees, 459,418 bytes allocated.
    Comme vous pouvez voir, les allocations ne sont pas négligéables...

    Est-ce que c'est une problème d'initialization des variables aStart et aEnd ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les fonctions time() et difftime() travaillent à la seconde. 11000 allocations/désallocations en moins d'une seconde, c'est parfaitement possible. Tu as essayé avec clock() par exemple?

    Carl

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    Si tu es sous Windows, regarde du côté de QueryPerformanceCounter.

    Je ne connais pas l'équivalent pour Linux, qui existe probablement, mais que de toute manière on peut faire en assembleur.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/07/2007, 18h38
  2. Temps D'execution D'un Programme
    Par hamska2 dans le forum C
    Réponses: 14
    Dernier message: 09/05/2007, 18h14
  3. temps d'execution d'un programme multithread
    Par La taupe dans le forum C
    Réponses: 2
    Dernier message: 10/01/2007, 17h44
  4. Réponses: 5
    Dernier message: 19/06/2006, 22h54
  5. temps d'execution d'un programme
    Par Invité(e) dans le forum C
    Réponses: 8
    Dernier message: 17/05/2006, 13h12

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