2017-11-11 2 views
0

Mir ist bewusst, dass es in gprof eine Häufigkeit von Probenzählungen gibt, bevor das flache Profil gedruckt wird. Basierend auf der Häufigkeit der Stichproben zählt mein Urteil länger, das Programm läuft, mehr ist die Stichprobe für das Profiling gesammelt und daher sind die Daten besser. Aber ich bin nicht wirklich sicher, ob das stimmt und ob lang laufende Programme geeignet sind, auf gprof profiliert zu werden.Ist gprof für die Analyse lang laufender Programme geeignet? Warum oder warum nicht?

Alle Eingaben sind sehr hilfreich.

+0

Wenn Sie "Analyse" sagen, was * gprof * Ihnen sagt, gibt es nicht viel, was Sie tun könnten, um das Programm zu beschleunigen, was wahrscheinlich gute Nachrichten für den Programmierer sein werden - * falsche * gute Nachrichten. [* Hier ist, warum und wie es besser geht. *] (Https://Stackoverflow.com/a/1779343/23771) –

+0

Ich bin nicht mit der Beschleunigung des Programms, nur die Richtigkeit der Ergebnisse von gprof für Programme, die lange laufen – gajendra

Antwort

1

wahr, gprof hat Vorteile (Verfügbarkeit in jeder Plattform) die Nachteile machen ihn jedoch ungeeignet für komplexere Programme. 1) Instrumentierung fügt Funktionsaufruf Overhead 2) Überhöhung Profilcode in gemeinsam genutzten Bibliotheken 3) Profile nur der Hauptfaden 4) Informationen doesnt liefern über cache 5) vermißt doesnt give flops/s 6) doesnt analysieren Schleifen etc

0

Meine Antwort, die weit von der logischste mir scheint, ist:

Wenn das Programm mit langer Laufzeit, und wir sind nur in Profilierung interessiert, dann scheint grpof ein geeignetes Werkzeug, weil gprof auf Häufigkeit der Probenentnahme beruht , die standardmäßig 100 Hz ist. Wenn die Laufzeit von gprof sehr klein ist und wenn innerhalb dieser kurzen Dauer viele Funktionen aufgerufen werden, dann ist es sehr wahrscheinlich, dass die Stichprobengröße für das Profiling sehr gering ist und daher die Stichproben profilierter Funktionen nicht zuverlässig sind. Andernfalls kann der Instrumentierungsaufwand für die Profilerstellung die Laufzeit eines Programms erhöhen, und die gesamte Ausführungszeit entspricht möglicherweise nicht der tatsächlichen Laufzeit einer -Anwendung, die einfach durch Aufrufen der geeigneten Zeitfunktionen gemessen werden kann, die von Betriebssystemkern bereitgestellt werden.

Verwandte Themen