Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

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

0 views
Skip to first unread message

programmation

unread,
Nov 18, 2009, 1:56:15 AM11/18/09
to
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\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.

programmation

unread,
Nov 18, 2009, 2:04:08 AM11/18/09
to
il m'affiche :
<citation>
temps : 0.000000
temps : 0.000000
temps : 0.000000
</citation>

Que proposez vous ?

Christian ASTOR

unread,
Nov 18, 2009, 4:39:03 AM11/18/09
to
On 18 nov, 07:56, programmation <bouali.a...@gmail.com> wrote:

> Si oui alors est ce que on peut faire mieux ?

QueryPerformanceFrequency()-QueryPerformanceCounter() pour plus de
précision.
Code Microsoft déjà donné...

programmation

unread,
Nov 18, 2009, 6:23:24 PM11/18/09
to

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

unread,
Nov 19, 2009, 5:05:16 AM11/19/09
to
On 19 nov, 00:23, programmation <bouali.a...@gmail.com> 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

programmation

unread,
Nov 20, 2009, 4:55:17 AM11/20/09
to

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 secondes\n", 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

unread,
Nov 20, 2009, 5:24:33 AM11/20/09
to
On 20 nov, 10:55, programmation <bouali.a...@gmail.com> 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);
?

programmation

unread,
Nov 20, 2009, 6:10:51 AM11/20/09
to

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

unread,
Nov 20, 2009, 8:40:53 AM11/20/09
to
On 20 nov, 12:10, programmation <bouali.a...@gmail.com> 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()

0 new messages