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.


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.


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).


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());
}

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


7

Neu hinzugekommen ist Shiny .

.


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


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 )


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



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.).



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.