Fonction en C

Résolu/Fermé
chahbane - 7 mai 2011 à 12:10
 chahbane - 7 mai 2011 à 23:30
Bonjour,
SVP j'ai besoin d'une fonction qui retourne la duree d'execution d'un tri par exemple en C!
merci d'avance!


2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2011 à 12:17
Bonjour,

"Mesurer temps d'exécution C" sur google vous emmène sur la page : http://www.jonathan-petitcolas.com/calculer-le-temps-dexcution-dune-fonction-en/
Le principe est simple : tu déclares deux variables de type clock_t
Tu encadres ta fonction de tri entre deux fonctions clock().
La différence entre les deux variables divisée sur le nombre de coups d'horloge par seconde te donnera le nombre de secondes.
<time.h>

clock_t deb, fin;
double duree;
deb=clock();
tri();
fin=clock();
duree=(fin-deb)/(double)CLOCKS_PER_SEC;

Cdlt,
3
merci mais il m'affiche toujours 0.000000
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
7 mai 2011 à 14:50
Peut-être que ta fonction met vraiment 0 seconde à s'exécuter ^^

Voici une fonction tri qui s'exécute en 10 secondes (mais qui ne tri rien :p)

void tri()
{
	clock_t t=clock()+10*CLOCKS_PER_SEC;
	while (clock()<t);
}
0
merci infinemant!! :)))
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2011 à 15:39
Comment as-tu affiché ta variable ?
Cdlt,
1
printf(" la duree : %f\n",duree)
j'ai essaye aussi %lf
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2011 à 21:44
Non c'est bien %f (et non %lf).
Peut-être que le tri est très rapide, surtout si ton tableau ne contient pas énormément d'éléments. Tu peux t'en assurer en affichant juste fin-debut; (sans diviser par le nombre de clocks par seconde).
Cdlt,
0
merci...
0