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 :

chronomètre en milliseconde


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut chronomètre en milliseconde
    Bonjour, lorsque j'éxécute mon code, j'affiche le temps d'éxécution de qq routines. Mais avec difftime, le temps est en seconde. Savez-vous comment faire pour avoir un chronomètre qui affiche jusqu'à la milliseconde.

    Sinon, sous unix, je fais time -p pour avoir le temps de mon prgm (en milliseconde).

    Merci.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu peux utiliser gettimeofday, qui te donne un temps en micro seconde (la structure timeval a deux champs, tv_sec, et tv_usec).
    Pour avoir une diff en millisecondes, il faut faire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dtime = (t1.tv_sec-to.tv_sec)*1000+(t1.tv_usec-to.tv_usec)/1000;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <time.h>
    //...
     
    clock_t deb=clock(),fin;
    // Ta routine... à mesurer en temps
    fin=clock();
    printf("run time=%lf\n",((double)(fin-deb)/CLOCKS_PER_SEC));
    Je ne sais pas si CLOCKS_PER_SEC est définit pour tout les compilo où si c'est standard, en tout cas avec mingw c'est ça

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Salut,

    Moi, j'utilise l'objet GTimer fournit par la glib (donne mesure en microsecondes):
    http://gtk.developpez.com/faq/?page=...IB_TEMPS_timer

    Sinon, d'autres solutions sont proposées ici:
    http://2007.perso.orange.fr/Code/C/mesure.htm

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    moi en gros je fais comme reptils et Sanguko ...

    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
    41
    42
    43
    44
    45
     
    double GetClock ( void )
    {
      double d ;
    #ifndef LINUX
    #ifdef WINDOWS
      struct timeval tval ;
      struct timezone *tz=(struct timezone *)NULL ;
      timerclear(&tval);
      if ( gettimeofday(&tval, tz) )
        {
    #ifdef DEBUG
          fprintf (stderr, " CLOCK ERROR !!!");
    #endif
        }
      d = ((double)(tval.tv_usec)/1000000.0) ;
      d = (double) tval.tv_sec + d ;
    #else
      struct timespec cur_time, res ;
     
      if (clock_gettime(CLOCK_REALTIME, &cur_time))
        {
    #ifdef DEBUG
          fprintf (stderr, " CLOCK ERROR !!!");
    #endif
        }
      d = ((double)(cur_time.tv_nsec)/1000.0) / 1000000.0 ;
      d = (double) cur_time.tv_sec + d ;
    #endif
    #else    
      struct timeval tval ;
      struct timezone *tz=(struct timezone *)NULL ;
      timerclear(&tval);
      if ( gettimeofday(&tval, tz) )
        {
    #ifdef DEBUG
          fprintf (stderr, " CLOCK ERROR !!!");
    #endif
        }
      d = ((double)(tval.tv_usec)/1000000.0) ;
      d = (double) tval.tv_sec + d ;
    #endif
     
      return d ;
    }

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK, merci beaucoup. Je vais essayer toutes vos idées.

Discussions similaires

  1. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  2. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40
  3. Réponses: 4
    Dernier message: 15/12/2002, 04h19
  4. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  5. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25

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