temps d'exécution en millisecondes?

temps d'exécution en millisecondes? - C - Programmation

Marsh Posté le 12-01-2005 à 13:10:29    

Bonjour, je voudrais savoir si c'est possible de mesurer le temps d'exécution d'une procédure ?
J'ai déja essayé quelque chose avec time.h mais ça ne marche qu'en secondes...

Code :
  1. main()
  2. {
  3.    char pause[10];
  4.    time_t debut,fin;
  5.    double dif;
  6.    int tab[50000];
  7.    printf("TRI CASIER : \n\n" );
  8.    remplir_tab(tab,50000);
  9.    time(&debut);
  10.    tri_casier(tab,50000);
  11.    time(&fin);
  12.    dif=difftime(fin,debut);
  13.    printf("\ntableau apres classement : \n" );
  14. // affichage du résultat
  15.    afficher_tab(tab,50000);
  16.    printf ("%.2lf secondes pour trier...\n", dif );
  17.    fflush(stdin);
  18.    gets(pause);
  19. }

Reply

Marsh Posté le 12-01-2005 à 13:10:29   

Reply

Marsh Posté le 12-01-2005 à 13:32:02    

Sous quel OS ?
y a timeGetTime sous windows par example, ça retourne des millisecondes.

Code :
  1. fflush(stdin);


Houllà !!!  :whistle:  vire ça avant que d'autres ne voient ça  entre autre ...  :pt1cable:  

Reply

Marsh Posté le 12-01-2005 à 13:41:36    

Code :
  1. clock_t t = clock();
  2. // erreur si t vaut clock_t(-1)


et tu fais la différence entre deux clock_t. Il y a la macro CLOCK_PER_SEC pour aider à convertir en seconde.
 
fflush(stdin); :o  
gets(pause); c'est une invitation gratuite au dépassement de tampon ?  :pt1cable:

Reply

Marsh Posté le 12-01-2005 à 13:45:31    

oui timeGetTime() sous windows eest ne millisecondes  
librairie winmm.lib
include mmsystem.h

Reply

Marsh Posté le 12-01-2005 à 19:38:30    

j'ai pas réussi avec timeGetTime...
En utilisant QueryPerformanceCounter, le résultat est-il correct?

Code :
  1. main()
  2. {
  3.    int tab[50000];
  4.    LARGE_INTEGER debut,fin,freq;
  5.    double tempsexec;
  6.    remplir_tab(tab,50000);
  7.    QueryPerformanceFrequency(&freq);
  8.    QueryPerformanceCounter(&debut);
  9.    tri_casier(tab,50000);
  10.    QueryPerformanceCounter(&fin);
  11.    tempsexec=(double)(fin.QuadPart - debut.QuadPart)/(double)freq.QuadPart;
  12. // affichage du résultat
  13.    printf("\n\nTemps d'execution : %5.3lf ms\n", tempsexec*1000);
  14.    getch();
  15. }


 
getch() c'est mieux ou c'est  :non: ?


Message édité par MobbDeep le 12-01-2005 à 19:43:48
Reply

Marsh Posté le 12-01-2005 à 20:53:56    

MobbDeep a écrit :

getch() c'est mieux ou c'est  :non: ?


C'est pas portable. Qu'est-ce qui ne va pas avec getchar() ?


Message édité par Emmanuel Delahaye le 12-01-2005 à 20:54:08

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-01-2005 à 21:09:48    

MobbDeep a écrit :


   (...)
   fflush(stdin);
   gets(pause);
}


double combo \o/
 
1 - fflush(stdin) n'existe pas, est faux, a un comportement indéfini, bref ne sert à rien ! on ne vide que les buffers de sortie, jamais ceux d'entrée !
 
2 - gets() est à proscrire pour la simple raison qu'il n'effectue aucun controle sur la taille du buffer passé en argument. donc si tu dépasses cette taille en entrée, c'est overflow, segfault et DTC


Message édité par Harkonnen le 12-01-2005 à 21:10:37

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-01-2005 à 21:36:03    

Pour la question initale, ce sujet a été traité moulte fois => recherche.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed