mesure de temps en c++ - C++ - Programmation
Marsh Posté le 10-12-2006 à 15:04:29
Tu utilises bien le type clock_t comme valeur de retour ? Pense aussi à utiliser un double pour calculer le temps cpu de (l'arrivée - départ) / CLOCKS_PER_SEC
Marsh Posté le 10-12-2006 à 15:27:53
normalement j'ai fait ce que tu ma dit...
voici mon code:
Code :
|
Marsh Posté le 10-12-2006 à 16:31:40
euh...
vu comme ça, je ne sais pas ce qui cloche...
essaie:
elapsed = double(end - start) / CLOCKS_PER_SEC;
Vérifie aussi que ça ne soit pas ton affichage qui soit mauvais. Moi je ne sais plus utiliser printf mais si ca se trouve, tu affiches un entier ou quelque chose comme ça...
Pour information ton code est entièrement en C, pas en C++, à partir des #include jusqu'aux printf, en passant par les scanf
sinon il existe un fonction time() je crois mais peut être qu'elle n'est pas assez précise, j'en ai aucune idée.
Marsh Posté le 10-12-2006 à 18:48:57
j'ai revirifier mon code, il fallait ecrire "%lf" dans scanfs pas "%if"^^
j'ai changer l'ecriture de elapsed = double(end - start) / CLOCKS_PER_SEC;
elle est plus logique..
quand j'execute le temps est toujours 0;mais le temps de l'execution pas à pas est different de 0 donc le pgm marche; seulement je doit inserer un tableau de dimension plus grande que j'avait l'habitude de le faire(j'executais avec 10 éléments au maximum!!)mais Comment le remplir???
Marsh Posté le 10-12-2006 à 18:52:13
ben avec une boucle qui le remplit avec des nombres aléatoires(ou non) ( random() ou quelque chose comme ca) ou alors lecture d'un fichier de données. Tu peux aussi tout rentrer à la main à chaque fois mais bon courage.
Marsh Posté le 10-12-2006 à 20:42:05
bon,j'ai essayé ça pour remplir le tableau mais ça marche pas ;
Code :
|
j'attends votre secours...
Marsh Posté le 10-12-2006 à 23:14:08
ame1560 a écrit : bon,j'ai essayé ça pour remplir le tableau mais ça marche pas ; |
ca manque de recherches on dirait...
ca va que c'est noël...
Code :
|
ou du moins quelque chose comme ça. Peut-etre srandom()...
random() renvoie un nombre entre 0 et RAND_MAX donc si tu divises par RAND_MAX t'obtiens un nombre entre 0 et 1.
Si après tu multiplies par la valeur max que tu recherches, tu obtiens un nombre entre 0 et cette valeur.
man random si tu es sous linux
sinon
Marsh Posté le 11-12-2006 à 08:32:41
ReplyMarsh Posté le 11-12-2006 à 11:38:51
Taz a écrit : y a du bon dans boost pour mesurer le temps. |
Tu parles de timer ?
Si oui, je trouve pas ça fantastique pour les mesures de performances : pas moyen de différencier user / system time, etc.
Marsh Posté le 11-12-2006 à 12:35:30
si c'est ça que tu veux faire, alors utilise un profiler / strace / ltrace / etc
Marsh Posté le 11-12-2006 à 13:45:31
Taz a écrit : si c'est ça que tu veux faire, alors utilise un profiler / strace / ltrace / etc |
Oui, c'est bien ce que je fais, mais j'attends toujours une solution portable pour mesurer des temps de calculs (y compris en cas de calcul parallèle)
Marsh Posté le 11-12-2006 à 19:01:26
franceso a écrit : Oui, c'est bien ce que je fais, mais j'attends toujours une solution portable pour mesurer des temps de calculs (y compris en cas de calcul parallèle) |
Bon courage
Marsh Posté le 11-12-2006 à 21:37:33
ame1560 a écrit :
|
Code :
|
ne fonctionne pas mieux ?
Marsh Posté le 10-12-2006 à 15:01:21
salut..
je suis débutante en c++ ,
je cherche à calculer le temps d'execution d'un programme, j'ai utilisé clock() de time.h : le pb c'est que le temps d'execution est toujours 0,je pense que je doit convertir en millisecondes; mais comment??
merci d'avance..