L'optimisation du code est un aspect clé du codage et divers programmes aident à suivre les performances du code. Les outils logiciels sont appelés profileurs. Si vous en cherchez un basé sur Linux, vous avez GPROF a ta disposition.
Travailler avec GPROF Profiler
Le GPROF est un profileur GNU qui mesure les performances d'un programme. Il mesure les performances des programmes écrits en Fortran, C ++, Assembly et C. Les résultats générés par la commande Linux aident à optimiser le code pour une exécution et une efficacité plus rapides en affichant les parties du programme consommant le plus de temps d'exécution.
Pour utiliser la commande GPROF pour analyser votre programme, vous devez le compiler en utilisant le -p option. Tout d'abord, créons un programme à utiliser pour notre exemple. Ici, nous créons un programme C, compilons-le, exécutons la sortie avec GPROF, puis vérifions le rapport généré par le GPROF pour voir comment la commande fonctionne.
Notre fichier de programme est nommé démo1.c. Pour le compiler à l'aide du compilateur GCC, vous devez ajouter le -p Options pour ajouter des détails supplémentaires à utiliser par le GPROF. La commande sera:
$ gcc -pg démo1.C -o Output1
Notre sortie compilée est sortie 1 Et une fois généré, nous devons l'exécuter normalement en utilisant la commande suivante:
$ ./ sortie1
L'exécution de cet exécutable génère les données de profilage qui, par défaut, sont nommées gmon.dehors.
GPROF travaille avec GMon.pour afficher tous les détails sur le programme.
$ gprof output1 gmon.dehors
Notez que GPROF prend deux arguments: le programme compilé et le GMon.dehors. Le rapport de sortie contient deux sections: le profil à plat et le Génération de profil de graphe d'appel.
Analyse de la sortie du profileur GPROF
1. Profil plat
À partir de la sortie précédente, nous pouvons noter la section diverses du rapport.
La première chose à noter est les différentes fonctions que le programme avait. Dans ce cas, nous avions le func3, func2, func1, et aléatoire répertorié dans le nom section. Le % temps représente le temps d'exécution de chacune des fonctions. Nous voyons que le func3 a pris le plus de temps pour courir, ce qui implique que si nous avions besoin d'optimiser notre programme, c'est là que nous commencerions.
Le appels représentent le nombre de fois où chacune des fonctions est invoquée. Pour chaque fonction, le temps passé sur chaque fonction par appel est représenté dans le Self ms / appel. Avant d'atteindre une fonction spécifique, vous pouvez également afficher le temps passé sur la fonction au-dessus, le secondes cumulatives, qui ajoute le moi-même et le temps passé sur les fonctions précédentes.
Le Selon les secondes est le temps passé sur une fonction spécifique seule. Le Total MS / appel est le temps pris sur une fonction comprenant le temps pris sur ses descendants pour chaque appel fait à la fonction.
En utilisant les détails précédemment donnés, vous pouvez désormais optimiser les performances de votre programme pour voir quelle partie a besoin d'une refonte pour réduire la consommation de temps.
2. Graphique d'appel
C'est un tableau représentant une fonction et ses enfants.
Le indice répertorie la fonction actuelle avec laquelle vous pouvez faire correspondre le numéro à son nom à droite.
Le %temps représente le temps passé sur une fonction et ses enfants pendant que le soi est le temps pris sur la fonction excluant ses enfants.
La meilleure partie avec le graphique d'appel est que chaque détail est bien représenté et que vous pouvez obtenir plus d'informations sur tous les résultats de la sortie affichée sur votre ligne de commande.
Conclusion
L'essentiel est que lorsque vous travaillez avec des programmes qui utilisent le GCC compilateur, vous pouvez toujours vérifier leur vitesse d'exécution pour savoir comment les optimiser au mieux. Nous avons présenté ce qu'est la commande GPROF et ce qu'elle fait. De plus, nous avons vu un exemple pratique de l'utiliser pour vous donner le dessus dans l'optimisation de votre code.