Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1322 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème avec clock()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec clock()

n°931292
Ez4Me2KU
Posté le 23-12-2004 à 23:35:34  profilanswer
 

Bonjour !
 
Voilà j'ai besoin de clock() pour mesurer le temps mis par un certain bout de code.
Je met bien l'entete nécéssare (time.h), je déclare deux var :
 
clock_t debut;
clock_t fin;
 
Puis :

Code :
  1. debut = clock();
  2. [ .... bout de code qu'il faut "statté" ... ]
  3. fin = clock();
  4. printf("Temps mis : %f\n",(float) (fin-debut)/CLOCKS_PER_SEC);


 
La compil se fait sans aucune erreur, même avec -Wall
Et quand je lance, j'ai ce resultat :
"Temps mis : 0.0000000"
 
Quand je débug mon programme avec ddd, et bien debut prend comme valeur 0 apres clock(), et pareil pour fin. Ce qui est bizarre, c'est que un strace me donne ca :
 
times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 431749080
 
Donc preuve que ca doit bien marcher, que y'a un réel probleme !!!
 
Si vous pouvez m'aider, merci par avance.

mood
Publicité
Posté le 23-12-2004 à 23:35:34  profilanswer
 

n°931327
matafan
Posté le 24-12-2004 à 03:58:06  profilanswer
 

1) clock() renvoit 0 car ton programme a tourné trop vite pour prendre des clock ticks
 
2) ((double)(fin - debut)) / CLOCKS_PER_SEC
 
Il me semble que ce qu'il te faut c'est plus getrusage().

n°933800
lsdYoYo
gravity powered
Posté le 29-12-2004 à 19:38:37  profilanswer
 

Quelle est la valeur sur ton système de "CLOCKS_PER_SEC" ?
C'est ton problème principal. Dans beaucoup d'implémentation, la résolution de "clock()" est trop faible pour chronométrer des durées inférieures à la milli-seconde. Deux soluces :
- Chronométrer N itérations du [... bout de code qu'il faut "statté" ...] : faire une boucle "for(i=0; i < N; i++)" et diviser la durée par N pour connaître la durée d'une seule boucle. C'est la soluce la plus simple mais pas toujours faisable en fonction du fameux "bout de code".
- Trouver une fonction plus précise, mais ça va dépendre de ton système. Sous Windows, par exemple, on trouve de chronos qui descendent jusqu'à la micro-seconde.


Message édité par lsdYoYo le 29-12-2004 à 19:39:55
n°933865
matafan
Posté le 29-12-2004 à 21:50:23  profilanswer
 

CLOCKS_PER_SEC vaut toujours 1000000 (c'est imposé pas POSIX) et n'a rien à voir avec la résolution effective de clock() sur ta machine.

n°933926
Emmanuel D​elahaye
C is a sharp tool
Posté le 30-12-2004 à 00:35:40  profilanswer
 

matafan a écrit :

CLOCKS_PER_SEC vaut toujours 1000000 (c'est imposé pas POSIX) et n'a rien à voir avec la résolution effective de clock() sur ta machine.


La norme du langage C n'impose rien. POSIX.1 fait ce qu'il veut... POSIX.1 n'est pas le C...


---------------
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/
n°935797
lsdYoYo
gravity powered
Posté le 03-01-2005 à 15:27:22  profilanswer
 

Euh, juste pour la p'tite histoire, je connais deux implémentation avec 18.2(!) et 1000.0.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème avec clock()

 

Sujets relatifs
Probleme de listing alphabétique et LIMIT avec jointures 1:nproblème de formulaire qui enregistre rien -> 2è problème :(
help: probleme de fonction .h en Crequete sql probleme avec accent é
problème d'inclusion des header MFCProbleme Argument mysql_num_rows
[QT] affichage de fenêtre et problème de classeProbleme CSS/XHTML.
modification d'une table [PROBLEME]Problème de script PHP MySQL
Plus de sujets relatifs à : Problème avec clock()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR