Les performances du programme créé ne sont pas aussi bonnes que prévu! Je ne sais pas où se trouve le goulot d'étranglement, alors je veux le savoir!
Dans un tel cas, utilisez un outil de profilage.
Je vais déposer le code source du lien vers la page de téléchargement en bas de http://goog-perftools.sourceforge.net/. La dernière version du 11 octobre 2014 est gperftools-2.2.1.tar.gz. Après la décompression, installez avec ./configure, make, faites l'installation comme d'habitude.
Il n'est pas nécessaire d'utiliser google-perftool uniquement sur la ligne de commande, google-perftool crée un diagramme visuellement facile à comprendre appelé un graphe d'appel. Puisque ce chiffre est généré au format point, il est judicieux d'installer également l'outil "graphviz" pour convertir ce fichier au format point en un format tel que eps.
Je vais supprimer le code source de la page de téléchargement de http://www.graphviz.org/. Décompressez également et ./configure, make, make install Si vous essayez d'installer à partir du code source, vous risquez de vous plaindre de ./configure car il existe de nombreuses bibliothèques dépendantes. Si vous souhaitez simplement convertir le fichier de points généré par google-perftool en eps, la plupart d'entre eux ne sont pas fonctionnellement nécessaires, alors ignorez-les et effectuez l'installation.
Ajoutez le répertoire lib dans lequel google-perftool est installé à LD_LIBRARY_PATH. Écrivez-le dans ./bash_profile etc.
export LD_LIBRARY_PATH=/home/tanaka/lib:$LD_LIBRARY_PATH
Liez libprofiler.so lors de la compilation du programme que vous souhaitez profiler.
$ g++ -o hoge.exe hoge.cpp -g -lprofiler
Exécutez le programme en spécifiant le nom du fichier d'analyse de la destination de sortie.
$ export CPUPROFILE=prof.out; ./hoge.exe
PROFILE: interrupts/evictions/bytes = xxx/x/xxxx
Cela générera prof.out, spécifiez donc le programme d'origine et le fichier d'analyse et affichez le résultat. Jetez un œil en haut de la fonction dont l'exécution prend beaucoup de temps.
$ pprof hoge.exe prof.out
Using local file prof.out.
Welcome to pprof! For help, type 'help'.
(pprof) top
Total: 355 samples
286 80.6% 80.6% 286 80.6% __write_nocancel
16 4.5% 85.1% 16 4.5% __read_nocancel
14 3.9% 89.0% 17 4.8% __lseek_nocancel
・
・
・
La deuxième colonne à partir de la gauche correspond au pourcentage de temps d'exécution occupé par la fonction. Puisque __write_nocancel est une fonction qui est finalement appelée par write (2), ce programme sait que write (2) est le goulot d'étranglement.
Créez un graphique d'appel qui montre le rapport entre le temps d'exécution et la taille de l'objet et l'affiche visuellement au format comme un organigramme dans l'ordre dans lequel les fonctions sont appelées comme suit.
$ pprof --dot hoge.exe prof.out > prof.dot
$ dot -T eps prof.dot > prof.eps
Certains des plus couramment utilisés sont:
Si vous pouvez utiliser yum ou apt-get (avec cette permission), il peut être facile d'installer et d'utiliser perf ou oprofile. (Parce que quand j'ai essayé d'installer perf à partir du code source dans mon répertoire personnel, j'ai raté configure ou make et j'ai abandonné.)
Si google-perftool est le noyau Linux 2.6.31 ou supérieur, je pense qu'il est facile à utiliser en ce sens qu'il est moins susceptible de trébucher lors de l'installation à partir des sources.
Recommended Posts