Frage Was ist Ihr bevorzugtes Profiling-Tool (für C ++) [geschlossen]


Bisher habe ich nur Rational Quantify verwendet. Ich habe große Dinge über Intels VTune gehört, aber noch nie ausprobiert!

Edit: Ich suche hauptsächlich nach Software, die den Code instrumentiert, da ich denke, dass dies der einzige Weg ist, um sehr gute Ergebnisse zu erzielen.


Siehe auch:

Was sind einige gute Profiler für natives C ++ unter Windows?


75
2017-08-25 19:09


Ursprung


Antworten:


Für Linux-Entwicklung (obwohl einige dieser Tools auf anderen Plattformen funktionieren könnten). Dies sind die zwei großen Namen, die ich kenne, es gibt viele andere kleinere, die seit einiger Zeit keine aktive Entwicklung gesehen haben.


31
2017-08-25 19:32



Für Linux:   Google Pertools

  • Schneller als Valgrind (noch nicht so feinkörnig)
  • Benötigt keine Code-Instrumentierung
  • Schöne grafische Ausgabe (-> kcachegrind)
  • Ist Memory-Profiling, CPU-Profiling, Leak-Checking

24
2017-09-16 08:22



Meine einzige Erfahrung Profiling C ++ Code ist mit AQTime von AutomatedQA (jetzt SmartBear Software). Es verfügt über verschiedene Typen von Profilern (Performance, Speicher, Windows-Handles, Ausnahmebehandlung, statische Analyse usw.) und instrumentiert den Code, um die Ergebnisse zu erhalten.

Ich genoss es, es zu benutzen - es war immer lustig, jene Stellen zu finden, an denen eine kleine Änderung im Code eine dramatische Verbesserung der Leistung bringen könnte.


6
2017-08-25 19:23



MEINER BESCHEIDENEN MEINUNG NACH, Sampling mit einem Debugger ist die beste Methode. Sie benötigen lediglich eine IDE oder einen Debugger, mit dem Sie das Programm anhalten können. Es bemerkt Ihre Leistungsprobleme, bevor Sie den Profiler überhaupt installieren.


6
2017-11-05 00:33



Ich habe gebraucht Glühcode ausgiebig in der Vergangenheit und haben nur positive Erfahrungen damit gemacht. Die Visual Studio-Integration ist wirklich nett und es ist der effizienteste / intuitivste Profiler, den ich jemals verwendet habe (sogar im Vergleich zu Profilern für verwalteten Code).

Offensichtlich ist das nutzlos, wenn Sie nicht unter Windows laufen, aber die Frage lässt mir ganz klar, was Ihre Anforderungen sind.


5
2017-08-25 19:27



Der Profiler in Visual Studio 2008 ist sehr gut: schnell, benutzerfreundlich, klar und gut in die IDE integriert.


5
2017-09-22 07:18



Ich habe noch nie Profiling gemacht. Gestern habe ich eine ProfilingTimer-Klasse mit einem statischen Stundenplan (eine Karte <std :: string, long long>) für die Zeitspeicherung programmiert.

Der Konstruktor speichert den Start-Tick und der Destruktor berechnet die verstrichene Zeit und fügt sie der Map hinzu:

ProfilingTimer::ProfilingTimer(std::string name)
 : mLocalName(name)
{
 sNestedName += mLocalName;
 sNestedName += " > ";

 if(sTimetable.find(sNestedName) == sTimetable.end())
  sTimetable[sNestedName] = 0;

 mStartTick = Platform::GetTimerTicks();
}

ProfilingTimer::~ProfilingTimer()
{
 long long totalTicks = Platform::GetTimerTicks() - mStartTick;

 sTimetable[sNestedName] += totalTicks;

 sNestedName.erase(sNestedName.length() - mLocalName.length() - 3);
}

In jeder Funktion (oder {Block}), die ich profilieren möchte, muss ich hinzufügen:

ProfilingTimer _ProfilingTimer("identifier");

Diese Zeile ist ein bisschen mühsam in allen Funktionen hinzuzufügen, die ich profilieren möchte, da ich raten muss, welche Funktionen viel Zeit brauchen. Aber es funktioniert gut und die Druckfunktion zeigt die verbrauchte Zeit in% an.

(Arbeitet jemand mit einem ähnlichen "hausgemachten Profiling"? Oder ist es nur dumm? Aber es macht Spaß! Hat jemand Verbesserungsvorschläge?

Gibt es eine Art automatisches Hinzufügen einer Zeile zu allen Funktionen?


5
2017-11-20 14:33