Was ist der beste kostenlose C ++ - Profiler für Windows? [geschlossen]

224

Ich suche einen Profiler, um den Engpass in meinem C ++ - Code zu finden. Ich möchte ein kostenloses, nicht aufdringliches und gutes Profiling-Tool finden. Ich bin ein Spieleentwickler und benutze PIX für Xbox 360 und fand es sehr gut, aber es ist nicht kostenlos. Ich kenne den Intel VTune , aber er ist auch nicht kostenlos.

ugasoft
quelle
VTune scheint jetzt kostenlos zu sein: software.intel.com/en-us/vtune . Ich habe die Community Edition heruntergeladen und sie leistet hervorragende Arbeit bei der Profilerstellung von C ++ sowie des verwalteten C # -Codes
Dr. ABT,
1
Wie ist das nicht zum Thema? Entwicklungswerkzeuge sind meines Wissens zum Thema. Es ist jedoch meinungsbasiert.
Nic Szerman

Antworten:

135

CodeXL hat jetzt den AMD Code Analyst von End Of Line abgelöst und beide sind kostenlos, aber nicht so fortgeschritten wie VTune. Es gibt auch Sleepy , was sehr einfach ist, aber in vielen Fällen die Arbeit erledigt.

yrp
quelle
4
Hier ist der Link für CodeAnalyst: developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
Epotter
1
Ich habe jetzt versucht, damit zu arbeiten, und es hat mir überhaupt nicht gefallen. Ich konnte nicht einmal verstehen, wie man die Gesamtzeit% der Funktion (einschließlich der Callees) erhält, die TrueTime vor 10 Jahren gut machen konnte.
Pavel Radzivilovsky
Ich habe eine Adaption von sleepy geschrieben, die nicht von wxWidgets abhängt, sondern in der Befehlszeile ausgeführt wird. Sie führen es für einen bestimmten Zeitraum gegen einen laufenden Prozess aus. Wenn Sie es dann stoppen, erhalten Sie die Statistiken darüber, was der Prozess für seine Zeit aufgewendet hat. Es ist nicht aufdringlich, dass Sie Ihren Code in keiner Weise ändern müssen, um ihn zu verwenden, aber es setzt Ihre Threads aus, während es die Aufrufstapel liest. Sie benötigen auch die verfügbaren PDF-Dateien, damit Sie eine aussagekräftige Ausgabe erhalten, aber ich denke, das gilt für jeden Profiler.
CashCow
Ich würde empfehlen, xperf auszuprobieren. Ich fand es AMD Code Analyst überlegen.
MW_dev
1
CodeAnalyst erhält keine weiteren Updates außer kritischen Fehlerkorrekturen. Sie wechselten zu CodeXL. Hier ist der Link , über den Sie Ihre Antwort aktualisieren können. Und danke, dass Sie mich jetzt übrigens über CodeAnalyst / XL informiert haben.
Adri CS
61

Very Sleepy ist ein C / C ++ - CPU-Profiler für Windows-Systeme (kostenlos).
CppCheck ist ein statischer C / C ++ - CPU-Profiler für Windows-Systeme (kostenlos).

lsalamon
quelle
20
googletest ist ein Unit-Test-Framework. Wie würden Sie das verwenden, um eine Profilerstellung durchzuführen?
Urwolf
Wenn Sie eine Windows-Binärdatei aus dem gcc-Stapel verwenden, ist dies eine gute Wahl - AMD CodeAnalyst erkennt keine gcc-Symbole unter Windows, aber sehr schläfrig!
Mike
17

Für MS VC 7.1 und höher gibt es einen instrumentenbezogenen (funktionsgenauen) Profiler namens MicroProfiler. Sie können es hier (x64) oder hier (x86) bekommen . Es erfordert keine Änderungen oder Ergänzungen Ihres Codes und kann Funktionsstatistiken mit Anrufern und Anrufern in Echtzeit anzeigen, ohne dass die Anwendung geschlossen oder der Profilierungsprozess gestoppt werden muss.

Es lässt sich in VisualStudio integrieren, sodass Sie die Profilerstellung für ein Projekt einfach aktivieren / deaktivieren können. Es ist auch möglich, es auf dem sauberen Computer zu installieren. Es müssen lediglich die Symbolinformationen zusammen mit der zu profilierenden ausführbaren Datei gefunden werden.

Dieses Tool ist nützlich, wenn die statistische Annäherung von Stichprobenprofilern wie Very Sleepy nicht ausreicht.

Ein grober Vergleich zeigt, dass es AQTime übertrifft (wenn es in der Instrumentierung auf Funktionsebene aufgerufen wird). Das folgende Programm (vollständige Optimierung, Inlining deaktiviert) wird dreimal schneller ausgeführt, wenn der Mikroprofiler die Ergebnisse in Echtzeit anzeigt, als wenn AQTime lediglich Statistiken sammelt:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}
Arty
quelle
1
Es ist einfach zu bedienen und superschneller Profiler. Das einzige Problem, das ich nicht gelöst habe, ist das Problem, dass das Profiler-Fenster nach dem Debuggen nicht automatisch geschlossen wurde und Sie es über den Task-Manager beenden müssen (ohne das Sie Ihr Projekt nicht neu kompilieren können).
Ludek Vodicka
1
Ich habe festgestellt, dass das Profiler-Fenster auch regelmäßig geschlossen werden kann, nachdem ich meine App mit der regulären Schaltfläche SCHLIESSEN geschlossen habe. Wenn ich die App jedoch mit der Tastenkombination UMSCHALT + F5 (Debugging-Befehl beenden) beende, ist die Schaltfläche zum Schließen des Profiler-Fensters deaktiviert.
Ludek Vodicka
Funktioniert nicht mit VS 2015.
Rustyx
1
Behoben ab 1.1.590. Siehe Updates auf der Visual Studio Gallery-Seite ( visualstudiogallery.msdn.microsoft.com/… )
Arty
1
Das ist wirklich sehr, sehr gut! Sollte viel höher eingestuft werden! Super einfach zu installieren und auszuführen und bietet Ihnen das meiste, was Sie wissen müssen. Meine zweite Wahl ist Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve
10

Microsoft hat das Windows Performance Toolkit .

Es erfordert Windows Vista, Windows Server 2008 oder Windows 7.

Epotter
quelle
6
Wie ist es nicht kostenlos? Es ist Teil des Windows SDK. Ich konnte es ohne Probleme herunterladen. (Zugegeben, wir haben ein MSDN-Abonnement, so dass einige Leute möglicherweise eine andere Erfahrung haben als ich.)
Epotter
1
Kostenlos oder nicht, der Link funktioniert nicht mehr richtig.
Tomáš Zato - Wiedereinsetzung Monica
7

Neu hinzugekommen ist Shiny .

.

Buggieboy
quelle
3
Es können keine herunterladbaren Binärdateien gefunden werden, nur Quellcodes. Nicht sehr praktisch.
Monsignore
5

Ich empfehle Windows Performance Toolkit (WPT) oder XPERF

Das Befehlszeilen-Xperf-Befehlszeilentool zeichnet Ereignisverfolgungsprotokolle für Windows (ETW) auf, die mit dem GUI-Tool xperfview analysiert werden können.

Die Verwendung von Stacktrace-Befehlszeilenargumenten hat sich für mein Unternehmen als unschätzbares Werkzeug erwiesen, da es Engpässe profiliert und behebt. Eines der überzeugendsten Dinge ist, dass das WPT in jeder Umgebung installiert werden kann, selbst unter dem ehrwürdigen Windows XP .

Unter Windows 8 bringt der Windows Performance Analyzer xperf auf ein noch höheres Niveau.

Die harten Zahlen und Statistiken in ETW-Protokollen sind im Detail beispiellos, mit Ausnahme des Visual Studio Profiler (2010/2012), der ebenfalls großartig ist, aber keine kostenlose AFAIK.

Wenn Sie xperf noch nie benutzt haben ... wissen Sie nicht, was Sie vermissen

Coda
quelle
1
Nun, ich weiß, dass mir eine funktionierende URL zur Site fehlt.
Tomáš Zato - Wiedereinsetzung Monica
3

Ich verwende AQTime, es ist eines der besten Profiling-Tools, die ich je verwendet habe. Es ist nicht kostenlos, aber Sie können eine 30-Tage-Testversion erhalten. Wenn Sie also nur ein Projekt optimieren und profilieren möchten und 30 Tage für Sie ausreichen, würde ich die Verwendung dieser Anwendung empfehlen. ( http://www.automatedqa.com/downloads/aqtime/index.asp )

Dudico
quelle
Nur dieses Tool hat mir geholfen, ein Profil zu erstellen, das im Release-Modus für gemischte (verwaltete und native) Webanwendungen auf IIS erstellt wurde.
Monsignore
Es ist bedauerlich, dass sie keine Menschen unterstützen, die versuchen, ihr Produkt zu bewerten.
Lucky Luke
Derzeit bieten sie eine 14-tägige Testversion mit eingeschränkter Funktionalität an.
Max
2

Bitte versuchen Sie es mit meinem Profiler namens cRunWatch. Es sind nur zwei Dateien, sodass die Integration in Ihre Projekte einfach ist und genau eine Zeile hinzugefügt werden muss, um einen Code zu instrumentieren.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Benötigt die Boost-Bibliothek.

Ravenspoint
quelle
0

Ich habe jahrelang "TrueTime - Teil der DevPartner-Suite von Compuware" verwendet. Es gibt eine [kostenlose Version] (Sie können die Compuware DevPartner Performance Analysis Community Edition ausprobieren.).

Harold Ekstrom
quelle
0

Ich verwende VSPerfMon, den StandAlone Visual Studio Profiler. Ich habe ein GUI-Tool geschrieben, mit dem ich es ausführen und die Ergebnisse anzeigen kann.

http://code.google.com/p/vsptree/


quelle
0

Sie können EmbeddedProfiler verwenden, es ist sowohl für Linux als auch für Windwos kostenlos.

Der Profiler ist aufdringlich (nach Funktionalität), erfordert jedoch keine Codeänderungen. Fügen Sie einfach ein bestimmtes Compiler-Flag hinzu (-finstrument-functios für gcc / MinGW oder / GH für MSVC) und verknüpfen Sie die Bibliothek des Profilers. Es kann Ihnen einen vollständigen Anrufbaum oder nur eine Funktionsliste bereitstellen. Es hat eine eigene GUI für den Analysator.

Mi-La
quelle