[{"@context":"http:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/wiki.edu.vn\/wiki29\/2021\/05\/29\/gprof-wikipedia\/#BlogPosting","mainEntityOfPage":"https:\/\/wiki.edu.vn\/wiki29\/2021\/05\/29\/gprof-wikipedia\/","headline":"Gprof – Wikipedia","name":"Gprof – Wikipedia","description":"Gprof ist ein Tool zur Leistungsanalyse f\u00fcr Unix-Anwendungen. Es wurde eine Mischung aus Instrumentierung und Probenahme verwendet[1] und wurde als","datePublished":"2021-05-29","dateModified":"2021-05-29","author":{"@type":"Person","@id":"https:\/\/wiki.edu.vn\/wiki29\/author\/lordneo\/#Person","name":"lordneo","url":"https:\/\/wiki.edu.vn\/wiki29\/author\/lordneo\/","image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/44a4cee54c4c053e967fe3e7d054edd4?s=96&d=mm&r=g","height":96,"width":96}},"publisher":{"@type":"Organization","name":"Enzyklop\u00e4die","logo":{"@type":"ImageObject","@id":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","url":"https:\/\/wiki.edu.vn\/wiki4\/wp-content\/uploads\/2023\/08\/download.jpg","width":600,"height":60}},"image":{"@type":"ImageObject","@id":"https:\/\/en.wikipedia.org\/wiki\/Special:CentralAutoLogin\/start?type=1x1","url":"https:\/\/en.wikipedia.org\/wiki\/Special:CentralAutoLogin\/start?type=1x1","height":"1","width":"1"},"url":"https:\/\/wiki.edu.vn\/wiki29\/2021\/05\/29\/gprof-wikipedia\/","wordCount":2284,"articleBody":"Gprof ist ein Tool zur Leistungsanalyse f\u00fcr Unix-Anwendungen. Es wurde eine Mischung aus Instrumentierung und Probenahme verwendet[1] und wurde als erweiterte Version des \u00e4lteren “prof” -Tools erstellt. Im Gegensatz zu prof ist gprof in der Lage, das Sammeln und Drucken von Anrufdiagrammen zu beschr\u00e4nken.[1][2] Table of ContentsGeschichte[edit]Implementierung[edit]Einschr\u00e4nkungen und Genauigkeit[edit]Rezeption[edit]Siehe auch[edit]Verweise[edit]Weiterf\u00fchrende Literatur[edit]Externe Links[edit]Geschichte[edit]GPROF wurde urspr\u00fcnglich von einer Gruppe unter der Leitung von Susan L. Graham an der University of California in Berkeley f\u00fcr Berkeley Unix (4.2BSD) geschrieben[3]). Eine weitere Implementierung wurde 1988 im Rahmen des GNU-Projekts f\u00fcr GNU Binutils von Jay Fenlason geschrieben.[4][5]Implementierung[edit]Der Instrumentierungscode wird beim Kompilieren automatisch in den Programmcode eingef\u00fcgt (z. B. mithilfe von ‘-pg‘Option des gcc-Compilers), um Aufruferfunktionsdaten zu sammeln. Vor jedem Funktionsaufruf wird ein Aufruf der Monitorfunktion ‘mcount’ eingef\u00fcgt.[6] Die Abtastdaten werden in ‘gmon.out’ oder in ‘gespeichert.Progname.gmon ‘Datei kurz vor dem Beenden des Programms und kann mit der’gprof‘Kommandozeilen-Tool. Mehrere gmon-Dateien k\u00f6nnen mit ‘kombiniert werdengprof -s‘um Daten aus mehreren L\u00e4ufen eines Programms zu sammeln.Die GPROF-Ausgabe besteht aus zwei Teilen: dem flachen Profil und dem Anrufdiagramm. Das flache Profil gibt die Gesamtausf\u00fchrungszeit f\u00fcr jede Funktion und ihren Prozentsatz an der Gesamtlaufzeit an. Die Anzahl der Funktionsaufrufe wird ebenfalls gemeldet. Die Ausgabe wird nach Prozentsatz sortiert, wobei Hotspots ganz oben auf der Liste stehen.Der zweite Teil der Ausgabe ist das Textaufrufdiagramm, das f\u00fcr jede Funktion anzeigt, wer sie aufgerufen hat (\u00fcbergeordnet) und wen sie aufgerufen hat (untergeordnete Unterprogramme). Es gibt ein externes Tool namens gprof2dot, mit dem das Aufrufdiagramm von gprof in eine grafische Form konvertiert werden kann.[7]Einschr\u00e4nkungen und Genauigkeit[edit]Zur Laufzeit werden Zeitwerte durch statistische Abtastung erhalten. Die Abtastung erfolgt durch Pr\u00fcfen des Programmz\u00e4hlers des Zielprogramms in regelm\u00e4\u00dfigen Abst\u00e4nden unter Verwendung von Betriebssystem-Interrupts (programmiert \u00fcber Profil- (2) oder Setitimer- (2) -Syscalls). Die resultierenden Daten sind nicht genau, sondern eine statistische Ann\u00e4herung. Die Fehlermenge betr\u00e4gt normalerweise mehr als eine Abtastperiode. Wenn ein Wert das n-fache der Abtastperiode betr\u00e4gt, ist der erwartete Fehler im Wert die Quadratwurzel von n Abtastperioden.[8][9] Eine typische Abtastperiode betr\u00e4gt 0,01 Sekunden (10 Millisekunden) oder 0,001 Sekunden (1 ms) oder mit anderen Worten 100 oder 1000 Abtastungen pro Sekunde der CPU-Laufzeit. In einigen Versionen, wie z. B. BSD, kann die Profilerstellung f\u00fcr gemeinsam genutzte Bibliotheken aufgrund von Einschr\u00e4nkungen der Profil Funktion, die als Bibliotheksfunktion oder als Systemaufruf implementiert werden kann. In glibc gab es eine analoge N\u00fctzlichkeit namens “sprof”, um dynamische Bibliotheken zu profilieren.[10]Gprof kann die im Kernelmodus verbrachte Zeit nicht messen (Systemaufrufe, Warten auf CPU- oder E \/ A-Wartezeiten), und nur User-Space-Code wird profiliert.[9]Das mcount Die Funktion ist in einigen Implementierungen m\u00f6glicherweise nicht threadsicher, sodass Anwendungsprofile mit mehreren Threads m\u00f6glicherweise falsch sind (normalerweise wird nur der Hauptthread der Anwendung profiliert).[11]Der Instrumentierungsaufwand kann hoch sein (gesch\u00e4tzt auf 30%)[12]-260%[13]) f\u00fcr \u00fcbergeordnete oder objektorientierte Programme. Gegenseitige Rekursion und nicht triviale Zyklen k\u00f6nnen mit dem gprof-Ansatz (kontextunabh\u00e4ngiges Aufrufdiagramm) nicht aufgel\u00f6st werden, da nur die Bogen\u00fcberquerung und nicht die vollst\u00e4ndigen Aufrufketten aufgezeichnet werden.[13][14][15]Gprof mit Call-Graph-Sammlung kann nur mit kompatiblen Compilern wie GCC, Clang \/ LLVM und einigen anderen verwendet werden.Rezeption[edit]Im Jahr 2004 erschien ein GPROF-Papier auf der Liste der 50 einflussreichsten PLDI-Papiere aller Zeiten als eines von vier Papieren des Jahres 1982.[16]Laut Thiel[6] “GPROF … hat das Feld der Leistungsanalyse revolutioniert und wurde schnell zum bevorzugten Werkzeug f\u00fcr Entwickler auf der ganzen Welt. Das Tool hat immer noch eine gro\u00dfe Anh\u00e4ngerschaft. Das Tool wird immer noch aktiv gewartet und bleibt in der modernen Welt relevant.”Siehe auch[edit]Verweise[edit]^ ein b Susan L. Graham, Peter B. Kessler und Marshall K. Mckusick. gprof: ein Call Graph Execution Profiler \/\/ Proceedings of the SIGPLAN ’82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, Nr. 6, S. 120-126; doi: 10.1145 \/ 800230.806987^ gprof — Call Graph \/\/ Ping Huang, Computer neu erfinden, MIT AI Lab^ GESCHICHTE Der gprof-Profiler erschien in 4.2BSD^ GNU gprof Handbuch: “GNU gprof wurde von Jay Fenlason geschrieben.”^ GNU’s Bulletin, vol. 1 nr. 5 (1988): “Jay Fenlason, Mitarbeiter der Gprof Replacement Foundation, hat k\u00fcrzlich einen Profiler f\u00fcr GNU C fertiggestellt, der mit” GPROF “von Berkeley Unix kompatibel ist.”^ ein b Justin Thiel, Ein \u00dcberblick \u00fcber Tools und Techniken zur Analyse der Softwareleistung: Von GProf zu DTrace (2006) “2.1.1 \u00dcberblick \u00fcber GProf”^ Gprof Call Graph Visualisierung \/\/ Kochbuch f\u00fcr wissenschaftliches Rechnen. Python-Kochbuch. \u00c9cole polytechnique f\u00e9d\u00e9rale de Lausanne (EPFL)^ Statistische Ungenauigkeit von gprof Ausgabe Archiviert 2012-05-29 an der Wayback-Maschine^ ein b gprof Profiling Tools auf BG \/ P-Systemen Archiviert 2013-12-21 an der Wayback Machine, “Probleme bei der Interpretation von Profildaten”, Argonne Leadership Computing Facility^ http:\/\/www.hpl.hp.com\/research\/linux\/qprof\/^ HOWTO: Verwenden von gprof mit Multithread-Anwendungen \/\/ Sam Hocevar, 13.12.2004^ GNU gprof Profiler Archiviert 08.12.2015 an der Wayback-Maschine, Yu Kai Hong, Fakult\u00e4t f\u00fcr Mathematik an der National Taiwan University; 19. Juli 2008^ ein b Low-Overhead-Call-Path-Profiling von unver\u00e4ndertem, optimiertem Code, ACM 1-59593-167 \/ 8\/06\/2005.^ JM Spivey Schnelle und genaue Profilerstellung f\u00fcr Anrufdiagramme Archiviert 2012-02-07 at the Wayback Machine, 3. September 2003 \/\/ Software – Archiv f\u00fcr Praxis und Erfahrung, Band 34, Ausgabe 3, M\u00e4rz 2004, Seiten 249 – 264 Spivey, JM (2004). “Schnelle und genaue Profilerstellung f\u00fcr Anrufdiagramme”. Software: Praxis und Erfahrung. 34 (3): 249\u2013264. CiteSeerX 10.1.1.62.1032. doi:10.1002 \/ spe.562.^ Yossi Kreinin, Wie Profiler l\u00fcgen: die F\u00e4lle von gprof und KCachegrind \/\/ 2. Februar 2013^ 20 Jahre PLDI (1979\u20131999): Eine Auswahl, Kathryn S. McKinley, HerausgeberinWeiterf\u00fchrende Literatur[edit]Susan L. Graham, Peter B. Kessler und Marshall K. Mckusick. gprof: ein Call Graph Execution Profiler \/\/ Proceedings of the SIGPLAN ’82 Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, Nr. 6, S. 120\u2013126; doi: 10.1145 \/ 800230.806987Graham, SL, Kessler, PB und McKusick, MK (1983), Ein Ausf\u00fchrungsprofiler f\u00fcr modulare Programme. Software: Pract. Exper., 13: 671\u2013685. doi: 10.1002 \/ spe.4380130803Externe Links[edit]"},{"@context":"http:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki29\/#breadcrumbitem","name":"Enzyklop\u00e4die"}},{"@type":"ListItem","position":2,"item":{"@id":"https:\/\/wiki.edu.vn\/wiki29\/2021\/05\/29\/gprof-wikipedia\/#breadcrumbitem","name":"Gprof – Wikipedia"}}]}]