mesure le temps d'exécution d'un traitement

Le
programmation
Bonjour,
Je voulais mesurer le temps d'exécution d'une partie donnée de mon
programme C sous Visual Studio.
Mais, je ne voulais pas tenir compte d'une sous partie de cette partie
donnée.

Voici ma proposition :


#include<time.h>

int main()
{
double fin,debut,debut1,fin1;

debut = clock();

//Le traitement
..
..
//le traitement à exclure
debut1 = clock();


fin1=clock();
//fin de traitement à exclure
//suite de premier traitement
..
..
fin=clock();
//fin de premier traitement

fprintf(stderr, "temps : %f", (double)(fin-debut) / (double)
CLOCKS_PER_SEC);
fprintf(stderr, "temps : %f", (double)(fin1-debut1) / (double)
CLOCKS_PER_SEC);
fprintf(stderr, "temps : %f", ((double)(fin-debut) - (double)(fin1-
debut1))/ (double) CLOCKS_PER_SEC);

return 0;

}

Est ce que c'est juste ?
Si oui alors est ce que on peut faire mieux ?
Si non alors que proposez vous ?

Merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
programmation
Le #20577021
il m'affiche :
<citation>
temps : 0.000000
temps : 0.000000
temps : 0.000000
</citation>

Que proposez vous ?
Christian ASTOR
Le #20577871
On 18 nov, 07:56, programmation
Si oui alors est ce que on peut faire mieux ?



QueryPerformanceFrequency()-QueryPerformanceCounter() pour plus de
précision.
Code Microsoft déjà donné...
programmation
Le #20583421
>
Code Microsoft déjà donné...



Bonjour,

si on a :
clock_t now = clock();
/*traitement */
fprintf(stderr,"nTemps CPU : %.2f secondes n",(double) (clock() -
now) / CLOCKS_PER_SEC);


QueryPerformanceFrequency()-QueryPerformanceCounter() pour plus de
précision.



- Comment on utilise QueryPerformanceFrequency()-
QueryPerformanceCounter() dans le code au dessus de clock()?

- Avez vous un argument ou justification que la fonction clock() est
moins précise que QueryPerformance ?

- Quelle est la différence entre QueryPerformance et clock ?


Merci.
Christian ASTOR
Le #20584931
On 19 nov, 00:23, programmation
- Comment on utilise QueryPerformanceFrequency()-
QueryPerformanceCounter() dans le code au dessus de clock()?



Mais lis-tu des fois les réponses que l'on donne ?!

http://tinyurl.com/yhw7vnt
programmation
Le #20593111
On 19 nov, 11:05, Christian ASTOR
On 19 nov, 00:23, programmation
> - Comment on utilise QueryPerformanceFrequency()-
> QueryPerformanceCounter() dans le code au dessus de clock()?

Mais lis-tu des fois les réponses que l'on donne ?!

http://tinyurl.com/yhw7vnt



Voici mon code:

int main()
{

__int64 nFrequency, nStartTime=0, nStopTime=0, nTotalTime=0;
char sFormat[32];
char sTime[255];
double nTime;




SetThreadPriority(GetCurrentThread(),
THREAD_PRIORITY_TIME_CRITICAL);
QueryPerformanceFrequency((LARGE_INTEGER*)&nFrequency);
QueryPerformanceCounter((LARGE_INTEGER*)&nStartTime);

// debut traitemet
..................
.....................

// fin traitement
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
nTotalTime = nStopTime - nStartTime;
nTime = nTotalTime /(double)nFrequency;

sprintf(sFormat, "%%.%df", 10);
sprintf(sTime, sFormat, nTime);
fprintf(stdout, "Temps : %s secondesn", sTime);


return 0;
}


Ce code m'affiche de temps négative par exemple: -18972.2222350522
secondes

C'est quoi le problème ?

Merci.
Christian ASTOR
Le #20593411
On 20 nov, 10:55, programmation
Ce code m'affiche de temps négative par exemple: -18972.2222350522
secondes
C'est quoi le problème ?



Et ou est le :
QueryPerformanceCounter((LARGE_INTEGER*)&nStopTime);
?
programmation
Le #20593701
On 20 nov, 11:24, Christian ASTOR
On 20 nov, 10:55, programmation
> Ce code m'affiche de temps négative par exemple: -18972.2222350522
> secondes
> C'est quoi le problème ?

Et ou est le :
QueryPerformanceCounter((LARGE_INTEGER*)&nStopTime);
?



oui çà marche.
J'ai remarqué que la fonction 'clock()' donne moins de temps que
'QueryPerformanceCounte' pour le même code.

Comment vous justifiez ceci et que vous proposez ?
Christian ASTOR
Le #20594731
On 20 nov, 12:10, programmation
J'ai remarqué que la fonction 'clock()' donne moins de temps que
'QueryPerformanceCounte' pour le même code.
Comment vous justifiez ceci et que vous proposez ?



Ca ne donne pas forcément moins de temps, mais c'est moins précis
Si je teste avec Sleep(2000); pour faire une pause de 2 secondes, ça
donne par exemple sur mon poste 2.00000 pour clock() et 1.9984003554
pour QueryPerformanceCounter()
Publicité
Poster une réponse
Anonyme