Welche frei, mit geringen Overhead (statistische) Profilometer kann man unter Linux verwenden?
-
21-08-2019 - |
Frage
Vorzugsweise von Ubuntu-Repositories.
Lösung
Andere haben erwähnt OProfile ; für das gesamte System umfassende statistische Profilierung auf modernen Linux-Installationen, tut es in der Tat Rock.
Das ehrwürdige Werkzeug (nicht Kernel-Unterstützung benötigt und somit wird unter älteren Versionen von Linux arbeiten oder auch Nicht-Linux-Betriebssysteme) ist GNU gprof , in binutils (und damit zweifellos bereits installiert in Ihrer Entwicklungsumgebung).
gprof
verwenden, kompilieren Sie einfach Ihre Anwendung mit dem -pg
Argumente gcc
; eine Datei namens gmon.out
wird nach dem Beenden des Programms erstellt werden, und gprof
kann dann diese Datei zu analysieren, verwendet werden.
Andere Tipps
Eine einfache, aber effektive Technik ist das Programm unter GDB und behandeln Sie das SIGINT Signal auszuführen. Während das Programm läuft, erzeugt SIGINT manuell durch die Eingabe von Strg-C oder was auch immer, und während es angehalten wird, das Call-Stack aufzeichnen. Tun Sie dies einige Male, wie 10 oder 20, während das Programm ist subjektiv langsam. Dies gibt Ihnen eine sehr gute Vorstellung davon, wo die Zeit vergeht.
Diese Methode nicht gibt Ihnen präzises Timing, aber es ist genau die Anweisungen finden, einschließlich Anruf Anweisungen, die die meiste Zeit kosten.
Sysprof ist ein guter Profiler, ähnlich wie OProfile (auch hat gTK GUI). die in der Ubuntu-Repository verfügbar ist. Es ist ein Kernel-Ebene Profiler, ein Kernel-Modul im Gegensatz zu gprof erfordern jedoch auch anders als gprof, kann es Multithreading-Anwendungen profilieren.
Es gibt OProfile . Es ist nicht so schwer zu bedienen, ist aber etwas fehlerhaft.
Ich habe mit oprofile gutem Erfolg hat ( http://oprofile.sourceforge.net/news/ ), die auch in Ubuntu-Repositories verfügbar ist. Dabei spielt es keine erneute Kompilierung erforderlich ist, und hat keine Einschränkungen in Bezug auf gemeinsam genutzte Objekte oder dergleichen.