Calcul de temps de traitement en C - Programmation
Marsh Posté le 04-12-2001 à 15:35:54
Merci !
euh, des détails sur la syntaxe ? comment récupérer le temps ?
Merci !
Marsh Posté le 04-12-2001 à 15:38:00
si t sous windows prefere GetTickCount qui me semble est un chtit peu plus precise
Marsh Posté le 04-12-2001 à 15:39:33
time.h
ca renvoi des clock_t
et tu fais (clock_t2 - clock_t2)/CLOCK_PER_SEC
Marsh Posté le 04-12-2001 à 15:41:49
euh, au risk de passer pour un bléro, vous pouvez filer un petit exple ?
si j'ai bien compris :
clock();
fonction_à_exécuter();
clock();
Mais pour le calcul ?
Merci encore
Marsh Posté le 04-12-2001 à 15:44:14
euh, et CLOCK_PER_SEC, je l'initialise à combien svp ?
Merci pour la 6ème fois je crois )
Marsh Posté le 04-12-2001 à 15:44:22
plutot
var = clock();
calcul
var = clock()-var;
et var contient le tps ecoule
Marsh Posté le 04-12-2001 à 15:44:53
CLOCK_PER_SEC c une constante, utilise sans toucher et ce sera OK
Marsh Posté le 04-12-2001 à 15:47:05
Pilou51 a écrit a écrit : euh, et CLOCK_PER_SEC, je l'initialise à combien svp ? Merci pour la 6ème fois je crois ) |
Il est defini dans time.h...
"normalement" clock doit renvoyer des milisecondes avec une precision de 10 ms et pas beaucoup plus d'une heure...
GetTickCount doit marcher de la meme maniere je suppose ?
Marsh Posté le 04-12-2001 à 15:47:39
euh, CLOCK_PER_SEC est undeclared...
il est défini dans time.h normalement non ?
Marsh Posté le 04-12-2001 à 15:48:54
Pilou51 a écrit a écrit : euh, CLOCK_PER_SEC est undeclared... il est défini dans time.h normalement non ? |
essayes CLOCKS_PER_SEC
Marsh Posté le 04-12-2001 à 15:51:23
euh c ok maintenant...
mais le temps de calcul semble être trop court...
il affiche toujours 0 (et je suis en long)...
d'autres précisions ?
Marsh Posté le 04-12-2001 à 15:54:27
Ben si tu fais un calcul pour optimiser la fonction, ne la fais pas tourner une fois mais bpc de fois
ensuite si tu veux de la precision vire la division par CLOCKS_PER_SEC
Marsh Posté le 04-12-2001 à 15:54:39
Pilou51 a écrit a écrit : euh c ok maintenant... mais le temps de calcul semble être trop court... il affiche toujours 0 (et je suis en long)... d'autres précisions ? |
moins de 10ms...
Tu travailles avec quoi ?
Dans visual il me semble qu'il y a un profiler qui te donnent le temps moyen dans chaque methode de ton projet...
Marsh Posté le 04-12-2001 à 15:58:58
oui effectivement je bosse sous visual...
je maîtrise pas vraiment, j'ai toujours codé sous Nunux, et du Java... tu peux m'en dire plus sur cette option de Visual stp ?
Merci
Marsh Posté le 04-12-2001 à 15:59:08
BENB a écrit a écrit : moins de 10ms... Tu travailles avec quoi ? Dans visual il me semble qu'il y a un profiler qui te donnent le temps moyen dans chaque methode de ton projet... |
il est mauvais ce profiler, je trouve
(m'a deja sorti des resultats 100% bidon, louche)
Marsh Posté le 04-12-2001 à 16:04:07
même en virant le CLOCKS_PER_SEC il me met toujours 0...
bizarre non ?
Marsh Posté le 04-12-2001 à 16:05:38
chrisbk a écrit a écrit : il est mauvais ce profiler, je trouve (m'a deja sorti des resultats 100% bidon, louche) |
A l'epoque (en 1997 - 1998 Visual 5.0) il fallait quand verifier... mais ca avait l'air correct en general...
Marsh Posté le 04-12-2001 à 16:07:43
BENB a écrit a écrit : A l'epoque (en 1997 - 1998 Visual 5.0) il fallait quand verifier... mais ca avait l'air correct en general... |
il m'a facher, celui du 6
J'avais une fonction A, mettons qu'elle tournait en 5s (tps mesure au GetTickCount)
je me casse a l'optmiser SIMD . temps 2.5s (GetTickCount tjs)
G passer ca au profiler de visu , il m'a sorti que ma fonction optimise etait ~25% plus lente que la normale
depuis je le boude
Marsh Posté le 04-12-2001 à 16:14:07
chrisbk a écrit a écrit : il m'a facher, celui du 6 J'avais une fonction A, mettons qu'elle tournait en 5s (tps mesure au GetTickCount) je me casse a l'optmiser SIMD . temps 2.5s (GetTickCount tjs) G passer ca au profiler de visu , il m'a sorti que ma fonction optimise etait ~25% plus lente que la normale depuis je le boude |
Par contre il ralenti toute l'appli...
Mais il est capable de te dire combien de temps tu passes dans une methode en fonction de l'appelant...
ou si prefere de te faire des graphes d'appel en te disant pour une methode donnee ou est passe le temps...
Je ne suis pas sure d'etre tres claire la
Sinon pour l'invoquer c'est dans les menus de Visual me semble-t-il...
Marsh Posté le 04-12-2001 à 16:14:10
#include <windows.h>
.....
DWORD a = GetTickCount();
//calcul
a = GetTickCount()-a;
printf("tps en ms : %d\n",a);
Marsh Posté le 04-12-2001 à 16:16:30
BENB a écrit a écrit : Par contre il ralenti toute l'appli... Mais il est capable de te dire combien de temps tu passes dans une methode en fonction de l'appelant... ou si prefere de te faire des graphes d'appel en te disant pour une methode donnee ou est passe le temps... Je ne suis pas sure d'etre tres claire la Sinon pour l'invoquer c'est dans les menus de Visual me semble-t-il... |
pur le mettre en route, fo deja la version enterprise de visu
ensuite faut aller dans project-settings-link-enable profiling
ensuite build - profile
a noter truc c.h.i.a.n.t c'est qu'il ne changera pas le rep courant de votre programme (genre il le lancera dans monProjet\debug a la place de monProjet, ce qui peut etre chaint si vous charger des fichiers avec des chemins relatifs)
Sinon ca aide pour savoir cbien de fois tu hit une fonction, mais pour le tps que tu passe dedans ca me semblait un peu pipo... (suite a cette xp)
Marsh Posté le 04-12-2001 à 16:32:01
OK ça marche !!!
Les résultats sont à peu près cohérents entre le profiler et le GetClickCount..
Merci bcp à tous les deux !
Marsh Posté le 05-12-2001 à 11:42:23
Tu peux recuperer un profiler hierarchique ici:
http://www.codercorner.com/News.htm
(c'est du C++ je crois, mais ca doit etre faisable
de l'adapter pour du C..
et puis si t'es sous visual, le C++ ca passe )
A+
LEGREG
Marsh Posté le 04-12-2001 à 15:32:14
Salut,
Voilà, je cherche le moyen de calculer le temps mis par l'exécution d'une certaine fonction, afin de le comparer avec d'autres méthodes (il s'agit simplement de tris de tableaux)...
Quelqu'un peut-il m'indiquer la fonction ? Je sais qu'il y en a une, mais pas moyend de la retrouver
Merci d'avance...