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

Langage C++ Discussion :

temps passé à l'exécution d'un algorithme en millisecondes


Sujet :

Langage C++

  1. #1
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Points : 51
    Points
    51
    Par défaut temps passé à l'exécution d'un algorithme en millisecondes
    Bonjour,

    J'ai codé un algorithme. J'ai besoin de calculer le temps d'exécution de cet algorithme (date Fin d'exécution et affichage du résultat _ date début d’exécution).
    J'ai essayé avec le code suivant :
    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 <time.h>
     
    void algo()
    {
        time_t t1,t2;
        time(&t1);
     
        instructions de lalgorithme
     
        time(&t2);
     
        std::cout<<ctime(&t1)<<endl; 
        std::cout<<ctime(&t2)<<endl; 
    }
    Le résultat est affiché sous la forme suivante date d’aujourd’hui heures:minutes:secondes pour le temps de début t1 et de fin t2. Et, je fais moi même la différence entre les deux. Mon problème est le suivant : je veux,en fait, avoir un affichage ou le temps apparait en millisecondes car mon algorithme est rapide donc le temps passé à l'exécution se voit plus clair en millisecondes.

    Merci d'avance.

  2. #2
    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
    Tu peux regarder ici http://en.cppreference.com/w/cpp/chrono l'exemple donné fait exactement ce que tu veux. N'oublie pas de passer ton compilateur en C++11 (option -std=c++11 avec gcc).

    Considère aussi d'utiliser simplement time ./mon_programme en ligne de commande (sous Linux, se renseigner pour Windows).

  3. #3
    Membre du Club
    Inscrit en
    Février 2011
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 188
    Points : 51
    Points
    51
    Par défaut
    j'essaye avec cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       clock_t start;
     
       start = clock(); 
       temps = (double)(clock()-start)/(double)CLOCKS_PER_SEC;
       cout("temps écoulé = ", temps);

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Une solution parmi d'autre
    Salut !
    J'ai une solution pour ça, et elle n'utilise que du C.
    Tu peux utiliser la fonction gettimeofday.

    man :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     #include <sys/time.h>
     
           int gettimeofday(struct timeval *tv, struct timezone *tz);
     
      struct timeval {
                   time_t      tv_sec;     /* seconds */
                   suseconds_t tv_usec;    /* microseconds */
               };
    Le premier argument c'est donc une struct timeval que tu initialises par une simple déclaration. Initialises-en deux en fait ! Une pour le début et une pour la fin de l'exécution.
    Tu peux mettre la struct timezone à NULL, c'est juste pour connaître ton fuseau horaire ! L'OS fait ça tout seul.
    Enfin tu appelles gettimeofday sur ton tvdeb au début et sur tvfin à la fin. Puis tu fais un petit calcul, avec les champs de struct timeval qui vont bien.
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #define N 1000
     
      struct timeval tv1, tv2 ;
    gettimeofday(&tv1,NULL);
     
    [... le programme ...]
     
    gettimeofday(&tv2,NULL);
     
    unsigned long time_spend_in_milliseconds= (tv2.tv_sec - tv1.tv_sec) * N + (tv2.tv_usec - tv1.tv_usec) / N ;

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Je réitère, en espérant que ça va ajouter une certaine emphase.

    Citation Envoyé par Trademark Voir le message
    Tu peux regarder ici http://en.cppreference.com/w/cpp/chrono l'exemple donné fait exactement ce que tu veux. N'oublie pas de passer ton compilateur en C++11 (option -std=c++11 avec gcc).

    Considère aussi d'utiliser simplement time ./mon_programme en ligne de commande (sous Linux, se renseigner pour Windows).
    Pourquoi faire en C quelque chose qu'on peut très bien faire en C++ ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/04/2011, 08h43
  2. Temps d'exécution d'un algorithme génétique
    Par debalgo dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 24/03/2011, 00h53
  3. [TP] Mesure du temps d'exécution d'un algorithme
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 18/05/2007, 06h47
  4. Calculer le temps passé
    Par Joeleclems dans le forum MFC
    Réponses: 4
    Dernier message: 29/04/2005, 09h40
  5. [FLASH MX] Le temps passe?
    Par nix dans le forum Flash
    Réponses: 3
    Dernier message: 08/02/2005, 08h48

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