Ich brauche einen guten Profiler für Windows und Linux (sie müssen nicht derselbe sein; separate Empfehlungen für jedes Betriebssystem sind in Ordnung), die an einen bereits laufenden Prozess angehängt werden können, der nicht in einem "speziellen" kompiliert wurde. Weise und geben Sie mir Statistiken darüber, welche Funktionen der Prozess die meiste Zeit in Anspruch nimmt. Ich verfüge über lang laufenden wissenschaftlichen Code und möchte Snapshots davon erstellen, wo er die meiste Zeit in verschiedenen Phasen der Ausführung verbringt, und in der Lage, die Ergebnisse zu erhalten, ohne das gesamte Programm starten zu müssen, um zu beenden .
Der Compiler, den ich verwende (Digital Mars D), wird mit einem Instrumentierungsprofiler geliefert. Es ist viel zu langsam für die Jobs, die ich leite. Da ich nur daran interessiert bin, größere Engpässe zu identifizieren, möchte ich etwas, das schnell und einfach zu verwenden ist, auch wenn es nur ungefähr genau ist. Im Idealfall sollte es auch in der Lage sein, alle Threads gleichzeitig zu profilieren und mir einen Gesamtbericht zu geben.
Unter Linux habe ich GDB als Sample-Profiler eines armen Mannes benutzt (meine App einige Male pausieren und sehen, in welcher Funktion sie sich befindet). Im Grunde ist das eine automatisierte Version von der ich suche.
Eine letzte Voraussetzung: Unter Linux muss es einfach zu installieren sein ohne Root-Rechte, da ich es auf einem Server ausführen werde, auf den ich keinen Root-Zugriff habe.
Edit: Während der Code in D geschrieben wurde, ist Ds Kompilierungsmodell usw. ähnlich genug zu C, dass Tools, die für C geschrieben wurden, gut funktionieren sollten.
Ich habe es nicht versucht, aber xProf wurde speziell für D geschrieben. Es ist ein statistischer Profiler.
Windows Performance Recorder (WPR) und Windows Performance Analyzer (WPA) sind die besten Profilerstellungswerkzeuge für Windows 8 und höher. Xperf funktioniert wirklich gut unter Windows 7.
Tags und Links c performance d profiler gdb