Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parXavier Prudhomme Modifié depuis plus de 9 années
1
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix
2
Profilage avec prof Compte le nombre des appels à chacune des fonctions et mesure le temps passé dans chacune d’elles –Avantages :- Fourni avec Unix (arabica) - Simple d’utilisation –Inconvénients :- Donne seulement les informations sur les fonctions (pas un problèmes si le programme est bien structuré ) - Résultats pas toujours faciles à analyser pour des programmes de grande taille (trop d’informations) Sous Linux, l’outil de profilage s’appelle gprof
3
Utilisation Compiler le programme avec l’option –p –cc –p nomFichier.c Exécuter le programme normalement –a.out Lire le fichier mon.out avec prof –prof[-options] Attention: –Le fichier mon.out contient seulement les informations sur les fichiers compilés et liés avec l’option –p de cc. Faire attention si on utilise la compilation séparée des fichiers ou un makefile !
4
Options utiles (Traduction de man.SunOS 5.8Last change: 1 Nov 1999) SYNOPSIS prof [ -ChsVz ] [ -a | c | n | t ] [ -o | x ] [ -g | l] [ -m mdata ] [ prog ] OPTIONS Les options mutuellement exclusives : -a, -c, -n, et -t déterminent le type de tri appliqué à la sortie : -aTri par adresse croissante des fonctions -cTri par nombre décroissant d’appels -nTri par nom de fonction -tTri par pourcentage décroissant du temps tota (option par défaut) -m mdataUtilise le fichier mdata au lieu du fichier mon.out à l’entrée de prof
5
Exemple On utilise un petit programme de calcul statistique. Le programme calcule la moyenne des valeurs contenues dans un fichier, la valeur de la statistique chi-carré et sa valeur critique. Ensuite, le programme annonce si l'hypothèse nulle a été acceptée ou non. Le fichier de données (Gauss_2-LOG.hit) et le fichier des tables avec des valeurs critiques (tableChiSquare.txt) doivent être dans le même répertoire que le programme exécutable. La valeur de alpha choisie par défaut est 0.05 (pour plus de détails se référer à votre cours de statistiques MAT4680). Attention: Ce programme a été modifié pour le test de la fonction de profilage de Unix. Ce n’est pas un exemple de programmation efficace. Le programme est exécuté (en boucle) le nombre de fois spécifié en entrée par l'utilisateur (dans notre exemple 1, 100, 1000 et 10000 fois).
6
Exemple (2) Utilisation : Compiler : cc -p chiSquarePourProf (crée l’exécutable et le fichier de profil) Exécuter : a.out nbToursDeBoucle (donne des valeurs intéressantes à partir de 1000 appels) Lire le profilage : prof [-options] Liens vers le programme et les fichiers des données: chiSquarePourProf.c Gauss_2-LOG.hit tableChiSquare.txt
7
Résultats pour une (1) itération (valeur de 1 dans la boucle for principale) % a.out 1 Début main Moyenne 150.818176 Chi Square 305.350281 Valeur critique 396.750000 Accepter H0, pas de différence significative fin main Le programme a utilisé 0.020 secondes % prof %Time Seconds Cumsecs #Calls msec/call Name 0.0 0.00 0.00 1 0. libererMemoire 0.0 0.00 0.00 1 0. accepterHypotheseNulle 0.0 0.00 0.00 2 0. valeurCritique 0.0 0.00 0.00 2 0. chiSquare 0.0 0.00 0.00 3 0. moyenne 0.0 0.00 0.00 1 0. lecture 0.0 0.00 0.00 1 0. main
8
Résultats pour 100 itérations Le programme a utilisé 1.890 secondes % prof %Time Seconds Cumsecs #Calls msec/call Name 100.0 0.01 0.01 200 0.05 valeurCritique 0.0 0.00 0.01 100 0.00 libererMemoire 0.0 0.00 0.01 100 0.00 accepterHypotheseNulle 0.0 0.00 0.01 200 0.00 chiSquare 0.0 0.00 0.01 300 0.00 moyenne 0.0 0.00 0.01 100 0.00 lecture 0.0 0.00 0.01 1 0. main
9
Résultats pour 1 000 itérations Le programme a utlilisé 18.960 secondes % prof %Time Seconds Cumsecs #Calls msec/call Name 72.2 0.13 0.13 2000 0.065 valeurCritique 22.2 0.04 0.17 2000 0.020 chiSquare 5.6 0.01 0.18 1000 0.010 lecture 0.0 0.00 0.18 1000 0.000 libererMemoire 0.0 0.00 0.18 1000 0.000 accepterHypotheseNulle 0.0 0.00 0.18 3000 0.000 moyenne 0.0 0.00 0.18 1 0. main
10
Résultats pour 10 000 itérations Le programme a utilisé 188.930 secondes % prof %Time Seconds Cumsecs #Calls msec/call Name 41.0 0.84 0.84 200000.0420 chiSquare 35.1 0.72 1.56 20000 0.0360 valeurCritique 14.1 0.29 1.85 30000 0.0097 moyenne 9.8 0.20 2.05 10000 0.0200 lecture 0.0 0.00 2.05 1 0. main 0.0 0.00 2.05 10000 0.0000 accepterHypotheseNulle 0.0 0.00 2.05 10000 0.0000 libererMemoire
11
Conclusions On peut voir que le nombre d’opérations effectuées peut influencer le résultat produit par prof. Le temps cumulé (pour 10 000 itérations) donné par prof est de 2.05 secondes, comparativement aux 188.930 secondes données par la fonction clock(). La différence s’explique par le fait que prof mesure le temps réellement utilisé par les fonctions, alors que l’instruction clock() tient compte du temps global, c-à- d., elle mesure aussi le temps utilisé par d’autres programmes (y compris les fonctions système) exécutés en même temps. Les procédures à optimiser seraient donc chiSquare et valeurCritique. La première fait appel à la fonction qui calcule la moyenne et leur temps d’utilisation s’additionnent. La fonction valeurCritique lit un fichier, il est donc « normal » qu’elle soit relativement lente.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.