Pages : 1
#1 Le 28/02/2008, à 00:47
- cidarK
Le temps avec le C
Bonsoir à tous.
j'ai un programme simple qui fait le tri d'un tableau, et selon le choix de l'utilisateur on utilise deux algorithmes différents.
Que dois-je faire pour comparer leurs performances (le temps d'exécution) ?
Hors ligne
#2 Le 28/02/2008, à 01:28
- best_friend_fr
Re : Le temps avec le C
Salut
Quand tu lances le programme, fais le avec time.
Par exemple, au lieu de faire
prog args
fais
time prog args
Ca te donnera le temps d'exécution
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#3 Le 28/02/2008, à 01:41
- cidarK
Re : Le temps avec le C
Merci beaucoup pour ta réponse
je suppose que le temps réel que prends l'algorithme pour s'exécuter est sys, non?
il n'existe pas une fonction en langage C. car on dirait que la précision de time n'est pas suffisante.
Hors ligne
#4 Le 28/02/2008, à 09:34
- Karl_le_rouge
Re : Le temps avec le C
C'est plus exactement: user (temps CPU consommé par le processus) + sys (temps CPU consommé par le système pour le processus)
Real c'est le temps passé entre le lancement du processus et son arrêt.
Pour mesurer le temps, tu peux encadre le code incrimé par deux appels à time puis faire un difftime mais c'est très grossier (résolution de l'ordre de la seconde), l'appel gettimeofday a une résolution de l'ordre de la milliseconde, clock_gettime avec une granularité à la nanoseconde.
man est ton ami !
Hors ligne
#5 Le 28/02/2008, à 21:43
- abetsic
Re : Le temps avec le C
Pour faire une analyse plus poussée, il y a gprof. Il faut au préalable compiler ton programme avec l'option -pg puis lancer une première fois ton code. un fichier gmon.out sera présent dans ton repertoire et tu pourras visualiser les résultats à l'aide du programme gprof. Tu dois pouvoir trouver des informations sur google je pense.
Hors ligne
#6 Le 29/02/2008, à 00:12
- Le Farfadet Spatial
Re : Le temps avec le C
Salut à tous !
Time est vraiment pas mal pour faire ça, je l'ai déjà utilisé dans des projets sérieux, même si c'est moins complet que gprof. Cela dit, je te conseille de faire un code qui fait plusieurs fois le tri et avec de (très) gros tableaux. De plus il vaut mieux le lancer plusieurs fois (par exemple 3) et faire la moyenne des résultats obtenus.
À bientôt.
Le Farfadet Spatial
Hors ligne
#7 Le 29/02/2008, à 00:43
- cidarK
Re : Le temps avec le C
Merci pour vos réponses.
Karl_le_rouge : J'ai pas pu utiliser clock_gettime car je n'ai pas très bien compris son prototype.(je suis débutant ).
abetsic : Je crois que ce que tu propose est plutôt destiné à une étude TRÈS poussé. J'ai omis les contraites qui était d'utiliser une fonction de time.h puis une commande linux !!
Donc je me retourne vers la solution de "Le Farfadet Spatial".
juste une question, j'ai crus comprendre qu'il faut utiliser des pointeurs pour sauver le résultat, tu n'aurais pas la syntaxe qu'il faut utiliser?
Hors ligne
#8 Le 29/02/2008, à 03:09
- Le Farfadet Spatial
Re : Le temps avec le C
Salut à tous !
juste une question, j'ai crus comprendre qu'il faut utiliser des pointeurs pour sauver le résultat, tu n'aurais pas la syntaxe qu'il faut utiliser?
Time est une commande qui sort son résultat sur la sortie standard. Le plus simple, c'est de faire des programmes qui utilisent tes algorithmes (un pour chaque), mais qui ne font pas de sortie. Tu lances ensuite ces programmes avec la commande time et redirige la sortie vers un fichier et tout sera sauvegardé.
Quelque chose comme ça :
time prog > result.sav
Comme ça, pas besoin de s'embêter avec des pointeurs.
À bientôt.
Le Farfadet Spatial
Hors ligne
#9 Le 29/02/2008, à 15:54
- cidarK
Re : Le temps avec le C
Merci pour vos réponses
Je vais donc utiliser time, et je vais bien voir.
Bonne journée à tous.
Hors ligne
Pages : 1