19.2 Laufzeitmessung (Profiling) 

Für kleinere Programme können Sie eine Laufzeitmessung mit der Funktion clock() vornehmen. Für größere und umfangreiche Projekte ist diese Funktion aber weniger geeignet. Bei solchen speziellen Fällen sollten Sie extra Programme einsetzen, die für diese geschrieben wurden – sogenannte Profiler.
Ein Profiler ist ein eigenständiges Programm, das Sie zur Laufzeitanalyse verwenden können. Der Vorteil dieses Werkzeugs ist, dass Sie mit ihm auch einzelne Funktionen analysieren können. So lässt sich schnell herausfinden, welcher Teil des Quellcodes mehr Zeit als gewöhnlich beansprucht. Ein Profiler ist ebenfalls ein Standardwerkzeug für Codetuning-Freaks.
Bei den kommerziellen Entwicklungsumgebungen ist der Profiler im Normalfall mit dabei. Es gibt aber auch einen kostenlosen Kommandozeilen-Profiler, den GNU-Profiler gprof, der für alle gängigen Systeme erhältlich ist.
Es ist nicht die Aufgabe dieses Buchs, Ihnen die Werkzeuge der Programmierung näher zu erläutern, dennoch will ich kurz auf die Verwendung des Profilers gprof unter Einsatz des gcc-Compilers eingehen. Für andere Profiler lesen Sie bitte die jeweilige Dokumentation der Online-Hilfe.
Als Erstes benötigen Sie einen fehlerfreien Quellcode, den Sie analysieren wollen. Dann müssen Sie den Quellcode mit dem Compiler-Flag -pg übersetzen:
gcc -pg programmname.c
Jetzt befindet sich im Verzeichnis eine Datei namens a.out (unter Windows/MS-DOS auch a.exe). Diese Datei ist die ausführbare Datei für Ihren Quellcode. Starten Sie jetzt das ausführbare Programm a.out. Nun werden die Profiling-Informationen in die Datei gmon.out geschrieben, die sich jetzt ebenfalls im Verzeichnis befindet. Nach Programmende können Sie gprof zur Auswertung der Datei gmon.out aufrufen. Die Ausgabe, die häufig etwas länger ist, leiten Sie am besten in eine Datei um:
gprof ./a.out > test_prof.txt
Die Textdatei test_prof.txt können Sie jetzt mit einem Editor Ihrer Wahl öffnen. Diese Datei beinhaltet wiederum zwei Dateien. Der erste Teil nennt
- die verbrauchte Rechenzeit der Funktionen und
- die Anzahl der Aufrufe von Funktionen.
Im zweiten Teil sehen Sie, wie sich die Rechenzeit von Funktionen auf die von ihnen aufgerufenen Unterfunktionen verteilt. Mehr zum Werkzeug gprof erfahren Sie in der entsprechenden Dokumentation.
Hinweis |
Sofern Sie mehr zum Profiling wissen wollen, kann ich Ihnen mein Buch »Linux-UNIX-Programmierung« empfehlen, das Sie zum Probelesen auch online auf meiner Homepage vorfinden. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.