Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

8 réponses
Avatar
programmation
Bonjour,
Je voulais mesurer le temps d'ex=E9cution d'une partie donn=E9e de mon
programme C sous Visual Studio.
Mais, je ne voulais pas tenir compte d'une sous partie de cette partie
donn=E9e.

Voici ma proposition :


#include<time.h>

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

debut =3D clock();

//Le traitement
...........
...........
//le traitement =E0 exclure
debut1 =3D clock();
............
...............
fin1=3Dclock();
//fin de traitement =E0 exclure
//suite de premier traitement
...........
..............
fin=3Dclock();
//fin de premier traitement

fprintf(stderr, "temps : %f\n", (double)(fin-debut) / (double)
CLOCKS_PER_SEC);
fprintf(stderr, "temps : %f\n", (double)(fin1-debut1) / (double)
CLOCKS_PER_SEC);
fprintf(stderr, "temps : %f\n", ((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.

8 réponses

Avatar
programmation
il m'affiche :
<citation>
temps : 0.000000
temps : 0.000000
temps : 0.000000
</citation>

Que proposez vous ?
Avatar
Christian ASTOR
On 18 nov, 07:56, programmation wrote:

Si oui alors est ce que on peut faire mieux ?



QueryPerformanceFrequency()-QueryPerformanceCounter() pour plus de
précision.
Code Microsoft déjà donné...
Avatar
programmation
>
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.
Avatar
Christian ASTOR
On 19 nov, 00:23, programmation wrote:

- 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
Avatar
programmation
On 19 nov, 11:05, Christian ASTOR wrote:
On 19 nov, 00:23, programmation wrote:

> - 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.
Avatar
Christian ASTOR
On 20 nov, 10:55, programmation wrote:

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);
?
Avatar
programmation
On 20 nov, 11:24, Christian ASTOR wrote:
On 20 nov, 10:55, programmation wrote:

> 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 ?
Avatar
Christian ASTOR
On 20 nov, 12:10, programmation wrote:

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()