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.
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.

Poser une question


<citation>
temps : 0.000000
temps : 0.000000
temps : 0.000000
</citation>
Que proposez vous ?
QueryPerformanceFrequency()-QueryPerformanceCounter() pour plus de
précision.
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);
- 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.
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.