COMMENT CALCULER LE TEMP D'EXÉCUTION DE CERTAINES FONCTIONS OU BOUT DE CODE DANS
ZogStriP
Messages postés164Date d'inscriptiondimanche 16 novembre 2003StatutModérateurDernière intervention 5 juillet 2005
-
10 avril 2004 à 20:33
anneclo
Messages postés1Date d'inscriptionsamedi 13 janvier 2007StatutMembreDernière intervention13 janvier 2007
-
13 janv. 2007 à 22:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
tout simplement, StartClock() et StopClock() sont des #define donc
StartClock(); // sera remplacé par STARTCLOCK = clock();
et
StopClock(); // sera remplacé par ENDCLOCK = clock();
et le ShowClock() est une petite fonction qui permet d'afficher le résultat tout simplement ...
~(.:: NitRic ::.)~
cs_Pacifica
Messages postés9Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention24 février 2006 14 avril 2004 à 21:02
Moi que je veux connaitre le temps d'execution d'une de mes instructions je fais ceci:
#include <time.h>
void main()
{
clock_t D,F;
D=clock();
instruction...
F=clock();
printf("Temps=%f\n\r",(F-D)/CLK_TCK);
}
J'utilse ceci car pour moi je trouve que c'est rapide.
Voilà pour ma part,
Pacifica.
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 11 avril 2004 à 18:24
j'allais oublier, alexman, GetTickCount() renvoie un DWORD et non un int
typedef unsigned long DWORD;
un entier non signé 32bits ... un int est(par défaut) signé
ca peut servir à éviter par exemple: signed/unsigned mismatch
qui n'est qu'un warning mais bon ...
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 11 avril 2004 à 18:18
Vous êtes difficile hein ...
time() renvoie l'heure, si ton process perd dison .03 sec de temp CPU à cause d'un autre programme ou autre, le temp d'exécution de ton programme va être .03 sec plus haut en utilisant time(), même chose pour GetTickCount() qui renvoie le uptime de Windows. clock() renvoie le temp CPU utilisé par le process appellant sans compter le temp CPU utilisé par d'autre process, si les autres process en cours font perdre .03 sec à ton process, ce .03 sec ne sera pas calculé avec clock(), ce qui est, à mon avis, plus précis que GetTickCount() & time() ...
En plus, mon code, d'après mes connaissances, est portable, Windows, Linux/Unix, Mac, etc ... un simple copier/coller et hop! le tour est joué!
~(..: NitRic ::.)~
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 11 avril 2004 à 10:08
+1
c'est comme ca que j'ai toujours fait (mais avec clock() )
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 11 avril 2004 à 09:46
Salut NitRic,
je voulais simplement demander si l'utlisation de l'api GetTickCount ne serait pas plus simple :
int iAvant, iApres;
int iResult;
iAvant = GetTickCount(); //Je sais pas sil ya des arguments, a verifier
{ ...............CODE...............}
iApres = GetTickCount();
iResult = iApres - iAvant;
printf("Voila : %d\n", iResult);
Ca me semble bocou plus simple, bien que je n'ai rien a reprocher a ta methode....
Voila NitRic...Bonne prog !
A++
Alhexman
ZogStriP
Messages postés164Date d'inscriptiondimanche 16 novembre 2003StatutModérateurDernière intervention 5 juillet 20051 10 avril 2004 à 20:33
utiliser la fonction time (sous linux) marche aussi bien !
13 janv. 2007 à 22:13
16 avril 2004 à 03:16
StartClock();
// instructions ...
StopClock();
ShowSlock("prefix ici, sinon NULL", 0 ou 1);
tout simplement, StartClock() et StopClock() sont des #define donc
StartClock(); // sera remplacé par STARTCLOCK = clock();
et
StopClock(); // sera remplacé par ENDCLOCK = clock();
et le ShowClock() est une petite fonction qui permet d'afficher le résultat tout simplement ...
~(.:: NitRic ::.)~
14 avril 2004 à 21:02
#include <time.h>
void main()
{
clock_t D,F;
D=clock();
instruction...
F=clock();
printf("Temps=%f\n\r",(F-D)/CLK_TCK);
}
J'utilse ceci car pour moi je trouve que c'est rapide.
Voilà pour ma part,
Pacifica.
11 avril 2004 à 18:24
typedef unsigned long DWORD;
un entier non signé 32bits ... un int est(par défaut) signé
ca peut servir à éviter par exemple: signed/unsigned mismatch
qui n'est qu'un warning mais bon ...
11 avril 2004 à 18:18
time() renvoie l'heure, si ton process perd dison .03 sec de temp CPU à cause d'un autre programme ou autre, le temp d'exécution de ton programme va être .03 sec plus haut en utilisant time(), même chose pour GetTickCount() qui renvoie le uptime de Windows. clock() renvoie le temp CPU utilisé par le process appellant sans compter le temp CPU utilisé par d'autre process, si les autres process en cours font perdre .03 sec à ton process, ce .03 sec ne sera pas calculé avec clock(), ce qui est, à mon avis, plus précis que GetTickCount() & time() ...
En plus, mon code, d'après mes connaissances, est portable, Windows, Linux/Unix, Mac, etc ... un simple copier/coller et hop! le tour est joué!
~(..: NitRic ::.)~
11 avril 2004 à 10:08
c'est comme ca que j'ai toujours fait (mais avec clock() )
11 avril 2004 à 09:46
je voulais simplement demander si l'utlisation de l'api GetTickCount ne serait pas plus simple :
int iAvant, iApres;
int iResult;
iAvant = GetTickCount(); //Je sais pas sil ya des arguments, a verifier
{ ...............CODE...............}
iApres = GetTickCount();
iResult = iApres - iAvant;
printf("Voila : %d\n", iResult);
Ca me semble bocou plus simple, bien que je n'ai rien a reprocher a ta methode....
Voila NitRic...Bonne prog !
A++
Alhexman
10 avril 2004 à 20:33