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 en millisecondes


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Temps en millisecondes
    Bonjour tout le monde!

    Je suis en train de developper une application en c++ ds laquelle j'ai besoin de mesurer le temps en ms.

    L'application est cense tourne sur Linux et LynxOS.

    Quels sont les moyens d'obtenir le temps en ms, que ce soit c++ ou c?

    J'ai deja essayer d'utiliser count() sans succes.
    time() retourne le temps UNIX en secondes.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Voilà ce que j'utilise sous Linux et Windows.
    Mais la précision est d'une dizaine de ms.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <ctime>
    inline double get_time() { return double(clock())/CLOCKS_PER_SEC; }

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta reponse.

    En fait ca ne marche pas avec clock(). Je pense que c'est parce que clock() retourne le temps processeur UTILISE pour le programme. Le probleme est que mon programme fait de l'attente passive, et par consequant la valeur de retour de clock() ne bouge presque pas. Est-ce correcte?

    J'ai trouve la solution, elle est tres simple en fait: Il suffit d'utiliser la fonction C gettimeofday(...) qui se trouve dans "sys/time.h".

  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
    Mais c'est un temps en seconde, non ?

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    En fait ca ne marche pas avec clock(). Je pense que c'est parce que clock() retourne le temps processeur UTILISE pour le programme. Le probleme est que mon programme fait de l'attente passive, et par consequant la valeur de retour de clock() ne bouge presque pas. Est-ce correcte?
    Je sais pas vraiment.
    J'utilise la fonction que je t'ai proposée pour mesurer le temps de calcul, si le temps de calcul est pas trop court, ça suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    double to=get_time();
    ...
    cout << get_time()-t0;
    Je crois savoir que Unix/Linux partage le temps alloué aux processus en tranches de 10ms. Ca peut contrarier des mesures du temps précises.

  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
    Pour le coup du clock(), je pense aussi que c'est le temps effectivement utilisé par le thread, ou qqch du genre.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    La fonction gettimeofday() retourne une structure qui contient les secondes ET les microsecondes ecoulees depuis 1970.

    Je l'ai essaye ds une boucle infini, et elle a vraiment une precision de l'ordre de la microseconde! Une telle precision est-elle possible? Ca me semble bizarre.

    Je crois savoir que Unix/Linux partage le temps alloué aux processus en tranches de 10ms. Ca peut contrarier des mesures du temps précises.
    C'est correcte, c'est ce que j'avais remarque en essayant d'utiliser clock().

  8. #8
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Sous Windows je crois qu'on peut s'en sortir avec des fonctions comme : QueryPerformanceCounter et QueryPerformanceFrequency... En gros, connaissant la frequence du processeur et le nombre de top d'horloge ecoulé, on peut en deduire le temps écoulé avec la précision max de la machine...

    Je ne m'en suis jamais servit donc je ne peut ici que donner la piste pour d'eventuelles recherches.

    Cependant, dans la MSDN ils disent qu'on obtient une precision de l'ordre de 10ms... On ne peut donc pas faire mieux je pense : http://support.microsoft.com/default...%3Bfr%3B172338

    Par contre je ne sais pas si des fonctions equivalentes sont disponible sous LINUX...

    Si quelqu'un en sait + sur le sujet ça m'interesse aussi
    Plus y'a d'Gruyère, plus y'a d'trous !
    Plus y'a d'trous, moins y'a d'Gruyère...
    Donc, Plus y'a d'Gruyère, moins y'a d'Gruyère !!!

  9. #9
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Au cas où, il y a toujours boost.date_time

Discussions similaires

  1. Manipuler le temps en milliseconds
    Par Tiberizz dans le forum Linux
    Réponses: 1
    Dernier message: 24/04/2008, 11h03
  2. Format du temps en millisecondes
    Par smail21 dans le forum Langage
    Réponses: 19
    Dernier message: 22/09/2007, 00h02
  3. obtenir le temps en milliseconde sous vc++ 2005
    Par radicalrider dans le forum Visual C++
    Réponses: 2
    Dernier message: 01/08/2006, 00h20
  4. Formater un temps en millisecondes
    Par TheDarkLewis dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/09/2004, 18h50
  5. Réponses: 8
    Dernier message: 18/09/2002, 03h20

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