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 :

Mesurer précisement le temps d'exécution d'une fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut Mesurer précisement le temps d'exécution d'une fonction
    Bonjour,

    Comment mesurer précisement le temps d'exécution d'une fonction en C++ pur. Je cherche une fonction généraliste (pas une fonction de l'API windows).

    Merci d'avance!
    Cordialement,
    Rodrigue

  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 : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Avec quelle précision ? - sachant que la fonction peut être interrrompue par l'OS qui donne le CPU à un autre thread -

  3. #3
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Bon n'exagérons pas mais la milliseconde serait parfait ...
    Je ne veux pas le centième de millionième de seconde!

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu veux un timer précis il faudra de toute façon passer par une fonction de l'OS. Tu peux aussi chercher du côté de RDTSC, il y a un tuto qui en parle ici si je me souviens bien.

  5. #5
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    J'ai regardé du côté de RDTSC mais ça ne m'intéresse pas vraiment ...
    Que puis-je utiliser d'autres alors (même si c'est spécifique windows) ?

  6. #6
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Il y'a les apis QueryPerfomanceCounter et GetProcessTimes.

    QueryPerformanceCounter est plus précis je pense.

  7. #7
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634

  8. #8
    Membre éclairé Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Par défaut
    Puis-je utiliser time_t ?
    Je me suis fait une petite classe très simple qui me permet de mesurer des temps:
    .h
    .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
    22
    23
    24
    25
    26
    27
     
    #ifndef Chrono_H
    #define Chrono_H
     
    #include <time.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/timeb.h>
     
    #pragma once
     
    class Chrono
    {
    public:
        Chrono(void);
        ~Chrono(void);
     
        time_t Start(void);
        time_t Stop(void);
     
        time_t TimeElapsed(void);
     
    private:
        time_t t1, t2;
    };
     
    #endif
    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
    #include "StdAfx.h"
    #include "Chrono.h"
     
    Chrono::Chrono(void)
    {
    }
     
    Chrono::~Chrono(void)
    {
    }
     
    time_t Chrono::Start(void)
    {
        return time(&t1);
    }
     
    time_t Chrono::Stop(void)
    {
        return time(&t2);
    }
     
    time_t Chrono::TimeElapsed(void)
    {
        return (t2 - t1);
    }
    Vous en pensez quoi ?

    Quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << chrono->TimeElapsed << std::endl
    , je n'obtiens pas un temps vraiment précis ... Comment faire pour afficher le temps avec plus de précision ?

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

Discussions similaires

  1. Mesurer le temps d'exécution d'une fonction.
    Par Luke spywoker dans le forum Débuter
    Réponses: 3
    Dernier message: 03/02/2015, 10h55
  2. Réponses: 9
    Dernier message: 03/07/2007, 11h44
  3. [VBA-E] Tracer le temps d'exécution d'une fonction
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/04/2007, 14h06
  4. mesurer le temps d'exécution d'une fonction
    Par Fonzy007 dans le forum C
    Réponses: 12
    Dernier message: 28/12/2006, 17h27
  5. Réponses: 3
    Dernier message: 11/03/2006, 15h35

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