Temps d'execution d'un programme

Temps d'execution d'un programme - C++ - Programmation

Marsh Posté le 05-11-2006 à 17:16:03    

Bonjour,
 
J'ai écris une fonction en C++ très simple qui fait un recherche séquentielle dans un tableau et je voudrai connaitre le temps qu'a mis la fonction à s'exécuter.  
 
Pour cela j'utilise la fonction clock() avant et après la ma fonction de recherche, mais j'obtiens le même temps en entrée et en sortie. Est-ce que la methode que j'utilise est mauvaise ou mon PC trop rapide  :??:  ??
 
Mon but final est de comparer la complexité de la fonction precedente avec un autre fonction de recherche mais récursive.
 
Connaitriez vous d'autres méthodes pour récupérer le temps d'exécution d'un bout de code, ou si ca vient de mon PC un methode plus precise.
 
Merci !!

Reply

Marsh Posté le 05-11-2006 à 17:16:03   

Reply

Marsh Posté le 05-11-2006 à 18:43:35    

J'utilise gettimeofday(), mais c'est la même résolution: 1microseconde. Ça ne suffit pas du tout si la fonction est trop rapide ou que la différence entre deux fonctions est minime. Dans ce cas, exécute en boulce tes fonctions (de 1000 à 1million de fois), tu auras plus de précision.

Reply

Marsh Posté le 05-11-2006 à 18:52:10    

Salut !
il existe aussi les fonctions :
QueryPerformanceFrequency() et QueryPerformanceCounter()
http://msdn.microsoft.com/library/ [...] ounter.asp
mais bon, c'est Win32 donc pas portable...  
 

Reply

Marsh Posté le 05-11-2006 à 18:55:12    

pour bien faire, faut lancer la méthode  
n*m fois
 
m fois parce qu'une seule fois c'est pas assez
et n fois le tout pour faire des stats basiques (min, max, moyen, ecart-type)

Reply

Marsh Posté le 05-11-2006 à 19:09:46    

Si j'ai bien compris entre les 2 clock() je doit lancer plusieurs fois ma méthode pour pouvoir avoir un temps significatif

Reply

Marsh Posté le 05-11-2006 à 23:10:16    

Le problème si tu lances ta méthode plusieurs fois pour la mesure, c'est que tu ne mesure plus la même chose puisque les caches sont déja "chauds" après la première passe. Suivant ce que ta fonction fait, elle peut très bien aller 2 fois plus vite après la première exécution.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed