Outils pour utilisateurs

Outils du site


dev:c-cpp:profilage-code

Profilage du code avec grpof

Des programmes sont dédiés à l'optimisation du code on parle de profilage du code.

Dans quels cas optimiser?

  • Si le programme est instable
  • Si le programme apparaît comme trop lent
  • pour la beauté du geste, la compréhension, la curiosité

Dans quels cas éviter:

  • L'optimisation n'est pas forcement judicieuse si le programme donne satisfaction et s’exécute normalement.
  • Ne pas dépenser trop de temps à l’optimisation si l’exécution est acceptable: maigres gains en rapport à l'investissement en temps
  • Ne pas profiler tout le programme mais procéder par fonction.

Recommandations codage en C

  • Ne pas évaluer des condition avec des variables non initialisées
  • Créer et détruire les objets
  • Allocation mémoire = libération

gprof est inclus au paquet binutils, il permet d'analyser le code s’exécutant et fournit des informations sur:

  • Le nombre d'appels de chaque fonctions.
  • Le temps d’exécution d'une fonction.

Il faut compiler en utilisant l'option -gp

gcc -pg -g -std=c99 main.c -o mon-exec

Une fois le binaire créé, lancer une fois l’exécution du programme, dans le dossier conteneur un fichier gmon.out est crée. ./mon-exec

# Exécuter gprof avec l'option -b (brief) et en argument l’exécutable avec le fichier gmon.out

$ gprof -b hello-gprof gmon.out

Sur la sortie standard, on obtient alors:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 84.96      0.48     0.48        1   484.25   484.25  init2
 15.93      0.58     0.09        1    90.80    90.80  init1
dev/c-cpp/profilage-code.txt · Dernière modification : 2021/02/01 21:51 de 127.0.0.1