Mesurer les temps d'exécution d'une fonction [c] - C++ - Programmation
Marsh Posté le 28-11-2002 à 18:01:20
si tu es sous Windows, tu peux utiliser la fonction GetTickCount(
Marsh Posté le 28-11-2002 à 18:02:34
Non, je voudrais une solution C standard (et c'est pour être compilé sous Unix)...
Marsh Posté le 28-11-2002 à 20:59:05
Edit : Correction suite à la remarque de Taz@PPC
Ca ne reponds pas à ta question, mais si tu travailles sous unix, tu peux utiliser gprof, c'est un profileur.
Tu compiles avec gcc [-Wall -pedantic] -pg fichier.c -o monprog.... ca te genere un gmon.out que tu analyses en tapant gprof monprog gmon.out > un_fichier parce que c'est pas mal bavard. Un vi de un_fichier te donnera une sortie comme ce qui suit : ( ca vient d'un truc tout naif que j'ai fait y'a une semaine )
|
Je ne sais pas si il y a un equivalent sous Windows.
Si tu peux te contenter d'une analyse à la seconde près, tu peux toujours faire comme ca :
..
Code :
|
Dois surement y avoir une solution plus propre...
A+
Marsh Posté le 28-11-2002 à 23:00:07
Code :
|
Merci qui
Marsh Posté le 28-11-2002 à 23:09:46
Taz@PPC a écrit a écrit : difftime(t2, t1) et pas la simple différence |
Exact, merci de me corriger
Marsh Posté le 28-11-2002 à 23:32:19
Je ne suis pas sûr que les fonctions C standard autorisent une précision meilleure que la seconde.
EDIT: Apparemment si... (voir au dessus le message d'itm)
Par contre, il existe tout de même des moyens comme :
Le problème c'est que toutes ces solutions ne sont pas universelles. Mais si c'est juste pour optimiser un programme, ça peux marcher.
P.S.: Tu peux aussi regarder dans les sources de Wine comment ils implementent la fonction GetTickCount.
Marsh Posté le 29-11-2002 à 13:15:48
Je propose:
Sous Windows: QueryPerformanceCounter et QueryFrequency
Sous Unix: gettimeofday
Marsh Posté le 29-11-2002 à 13:49:42
Si tu veux pas d'un profiler, il y a la fonction times (dans sys/times.h). Ca donne, en milli secondes, les temps user et systèmes passé dans ton process, ainsi dans ton process et ses enfants. Le truc bien c'est que c'est le temps passé sur ton process, indépendamment de ce que fait le système par ailleurs.
Marsh Posté le 29-11-2002 à 14:01:45
sous UNix
prompt>time ./nom_du_prog
ca va donner le tps d utilisation CPU moyen ainsi que le tps d execution.
Marsh Posté le 28-11-2002 à 17:59:24
Comment faire pour mesurer le temps d'exécution d'une fonction en C?
J'ai testé avec la fonction clock(), mais j'ai un résultat =0...