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 :

[C++] Calcul du temps d'exécution


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 45
    Points : 34
    Points
    34
    Par défaut [C++] Calcul du temps d'exécution
    Bonjour à tous,

    je travaille sur un projet pour un de mes cours. Nous avons tenté d'optimiser le programme. Nous aimerions comparer le temps d'exécution de la version finale optimisée à celui de la première version.

    Y a-t-il un moyen simple de faire cela?

    D'avance, je vous remercie.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Sous Linux, il y a time - on lance le prog avec time ./prog

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    J'suis sous Windows mais j'utilise Cygwin.

    Ca fonctionne !

    Que veulent dire précisément les 3 valeurs retournées par time ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ce sont les différents temps d'exécution, utilisateur, system, ...
    donne cette page : http://linux.about.com/library/cmd/blcmdl1_time.htm

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Salut,

    Perso, j'utilise ce petit bout de code que j'ai trouvé (si pour mesure de temps > à la sec)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void duree(time_t _begin, time_t _end) 
    {
      double temp; 
      double hours=0, min=0, sec=0; 
      double dureeCalc = difftime(_end, _begin);
      temp = modf(dureeCalc/3600., &hours); 
      temp = modf(temp*60., &min); 
      temp = modf(temp*60., &sec); 
      cout<<"Duree du calcul : "<<hours<<" h "<<min<<" min "<<sec<<" sec"<<endl; 
    }
    en l'appelant comme suit sans oublier la librairie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <time.h>
     
    main(......)
    {
    time_t begin=time(NULL);
     
    ...programme...
     
    time_t end=time(NULL); 
    duree(begin,end); 
    }
    Voilà bonne continuation

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Faut juste laisser la bécane sans rien faire pour ne pas fausser les résultats

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Octobre 2007
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Bonjour. Une réponse (qui fonctionne) inspirée de vos réponses (que je n'ai pas réussi à faire tourner... il faut dire que je débute ;-) !!) :

    Dans le .cpp
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "header.h"
    #include <time.h>
    #include <math.h>
     
    int main(){
    //========================================= DEBUT
        time_t begin , end;
        time (&begin);
     
    ................ corps du programme .............
     
    //========================================= FIN
            time(&end);
    //========================================= CALCUL DUREE
            duree(begin,end);
        }
        return 0;
    }
    Dans le header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void duree(time_t _begin, time_t _end);
    Dans le fichiers des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void duree(time_t time1, time_t time2){
        int hours = 0, min = 0, sec = 0;
        double dureeCalc;
        dureeCalc = difftime (time2,time1);
        float f2h = dureeCalc / 3600;
        hours = floor(f2h);
        int reste = dureeCalc - (hours * 3600);
        float f2m = dureeCalc / 60;
        min = floor(f2m);
        sec = dureeCalc - (min * 60);
        printf("Duree du calcul : %d h %d min %d sec",hours,min,sec);
    }
    Voila, je sais que le post est vieux (2006 !!!), mais c'est tjs interessant de mettre sur le Net une solution pour les newbies comme moi !!

    Bonne journée, et à bientôt

    KQMan

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,

    Solution à l'image du thread : périmée

    En effet, aujourd'hui, avec C++11, cela se fait beaucoup plus facilement (cf chrono) :
    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
    #include <iostream>
    #include <chrono>
    #include <cmath>
     
    int main()
    {
        std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
     
        for ( long i = 0; i < 10000000; ++i )
        {
            std::sqrt( 123.456L ); // burn some time
        }
     
        std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
        std::cout << "took " << sec.count() << " seconds\n";
        return 0;
    }
    Ou Boost.chrono lorsque std::chrono n'est pas dispo. (l'exemple ci dessus vient directement de la doc boost en changeant juste vers std)

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/04/2007, 01h49
  2. Calculer le temps d'exécution d'une requête
    Par BRAUKRIS dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/03/2007, 12h59
  3. Calculer le temps d'exécution d'un script
    Par pomgnon dans le forum C
    Réponses: 2
    Dernier message: 28/12/2006, 15h49
  4. Réponses: 3
    Dernier message: 11/03/2006, 15h35
  5. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12

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