Die Codeoptimierung ist ein wichtiger Aspekt der Codierung und verschiedene Programme tragen dazu bei, die Codeleistung zu verfolgen. Die Softwaretools werden als bezeichnet Profiler. Wenn Sie nach einer Linux-basiert suchen, haben Sie GPROF zu deiner Verfügung.
Zusammenarbeit mit GPROF -Profiler
Der GPROF ist ein GNU -Profiler, der die Leistung eines Programms misst. Es misst die Leistung von Programmen, die in Forran, C ++, Montage und C geschrieben wurden. Die im Befehl Linux generierten Ergebnisse helfen dabei, den Code für eine schnellere Ausführung und Effizienz zu optimieren, indem die Teile des Programms angezeigt werden.
Um den Befehl GPROF zur Analyse Ihres Programms zu verwenden, müssen Sie ihn mit dem kompilieren -pg Möglichkeit. Erstellen wir zunächst ein Programm, das wir für unser Beispiel verwenden können. Hier erstellen wir ein C -Programm, kompilieren Sie es, führen die Ausgabe mit GPROF aus und überprüfen dann den vom GPROF generierten Bericht, um zu sehen, wie der Befehl ausgeführt wird.
Unsere Programmdatei heißt Demo1.C. Um es mit dem GCC -Compiler zu kompilieren, müssen Sie die hinzufügen -pg Optionen zum Hinzufügen zusätzlicher Details, die vom GPROF verwendet werden sollen. Der Befehl wird sein:
$ gcc -pg Demo1.c -o output1
Unsere kompilierte Ausgabe ist Ausgabe1 Und sobald wir generiert wurden, müssen wir es normalerweise mit dem folgenden Befehl ausführen:
$ ./output1
Das Ausführen dieser ausführbaren Datei generiert die Profilerierungsdaten, die standardmäßig benannt sind Gmon.aus.
GPROF arbeitet mit GMon.Um alle Details zum Programm anzuzeigen.
$ gprof output1 gmon.aus
Beachten Sie, dass GPROF zwei Argumente einnimmt: das kompilierte Programm und die GMon.aus. Der Ausgangsbericht enthält zwei Abschnitte: die flach und das Call-Graph-Profilgenerierung.
Analyse der Ausgabe vom GPROF -Profiler
1. Flaches Profil
Aus der vorherigen Ausgabe können wir den verschiedenen Abschnitt im Bericht beachten.
Das erste, was zu beachten ist, sind die verschiedenen Funktionen, die das Programm hatte. In diesem Fall hatten wir das Func3, Func2, Func1, Und Randomnum in der aufgeführt Name Abschnitt. Der % Zeit repräsentiert die Laufzeit jeder Funktionen. Wir sehen, dass die func3 Ich habe am längsten geführt, um zu laufen, was bedeutet, dass wir, wenn wir unser Programm optimieren mussten, dort anfangen würden.
Der Anrufe Stellen Sie die Häufigkeit dar, die jeder der Funktionen aufgerufen wird. Für jede Funktion wird die Zeit für jede Funktion pro Aufruf in der dargestellt Self MS/Call. Bevor Sie eine bestimmte Funktion erreichen, können Sie auch die Zeit, die in der obigen Funktion aufgewendet wird, anzeigen, die kumulative Sekunden, Das fügt das Selbst zweite und die Zeit für die vorherigen Funktionen hinzu.
Der Selbst Sekunden ist die Zeit, die nur für eine bestimmte Funktion aufgewendet wird. Der Total MS/Call ist die Zeit, die eine Funktion mit der Zeit für jeden Aufruf an die Funktion benötigt, die Zeit für seine Nachkommen benötigt.
Mit den zuvor angegebenen Details können Sie nun die Leistung Ihres Programms optimieren, um festzustellen, welcher Teil einige Angaben benötigt, um die Zeitnutzung zu verkürzen.
2. Rufen Sie Diagramm auf
Es ist eine Tabelle, die eine Funktion und ihre Kinder darstellt.
Der Index Listet die aktuelle Funktion auf, mit der Sie die Nummer mit ihrem Namen rechts übereinstimmen können.
Der %Zeit repräsentiert die Zeit, die für eine Funktion und ihre Kinder aufgewendet wird, während die selbst ist die Zeit, die die Funktion mit Ausnahme ihrer Kinder benötigt.
Das Beste an der Anrufdiagramm ist, dass jedes Detail gut dargestellt ist und Sie weitere Informationen über alle Ergebnisse aus der in Ihrer Befehlszeile angezeigten Ausgabe erhalten können.
Abschluss
Das Fazit ist, dass bei der Arbeit mit Programmen, die die verwenden GCC Compiler können immer ihre Ausführungsgeschwindigkeit überprüfen, um zu wissen, wie Sie sie am besten optimieren können. Wir haben eingeführt, was der GPROF -Befehl ist und was es tut. Darüber hinaus haben wir ein praktisches Beispiel dafür gesehen.