Frage

Was würden Sie vorschlagen, das beste Werkzeug C / C ++ Code profilieren und bestimmen, welche Teile die meiste Zeit einnehmen. Zur Zeit bin ich nur auf Protokolle zu verlassen, aber natürlich die Informationen nicht genau, da unnötige Verzögerungen eingeführt werden.

Vorzugsweise würde das Werkzeug auch in der Lage sein / vorschlagen Bereiche zu erkennen, die optimiert werden können, wenn ein solches Werkzeug vorhanden sein.

Plattform: Linux

Der Antrag ist auf einer Embedded-Umgebung verwendet werden, so sollte es leicht und extern sein (kein Plugin auf einigen IDE).

War es hilfreich?

Lösung

Ich kann von ganzem Herzen empfehlen callgrind in Kombination mit KCachegrind .

Andere Tipps

„gprof“ auf Linux / FreeBSD ist ein recht einfaches und effizientes Werkzeug, um festzustellen, welche Routinen die CPU zur Laufzeit hogging. Es gibt sowohl verschachteltes und flaches Profil von Funktionen. Es gibt Ihnen den Prozentsatz der CPU-Zeit von jeder Funktion während der Laufzeit des Profilers ausgeführt genommen, und auch den Prozentsatz innerhalb der Funktion genommen selbst und den Prozentsatz von seinem Kind Funktionen übernommen. Das hilft Ihnen, leicht die problematischen Funktionen trennen.

Ich habe gute Erfahrungen gemacht mit dem Profiler von Microsoft Visual C ++ verwenden, gibt es andere externe Programme wie Intel VTune auch, aber die meisten von ihnen sind nicht frei.

Abhängig von der Plattform. Wenn Sie MSVC verwenden, hat einige Versionen davon ein Profiler eingebaut. AMD und Intel beide Profilern als auch (und VTune Codeanalyst) haben.

Unter Linux die einzige, die ich verwendet habe, ist gprof, aber ich weiß, es gibt andere (und ich denke, AMD oder Intel diejenigen, auch in Linux-Versionen verfügbar sein können)

Und natürlich die gesamte Valgrind Suite kann ebenfalls hilfreich sein werden. Einige Tools wie Callgrind oder cachegrind können Sie eine Menge Informationen über die Leistung.

Es gibt viele gute Profilierwerkzeuge dafür wie Quantify oder KCachegrind. Das einzige Problem mit diesen Werkzeugen ist, dass sie die Laufzeitleistung verlangsamen so auf einige große Systeme, die sie möglicherweise nicht gut genug skaliert werden.

Manchmal ist es genug, nur im Debugger, und drücken Sie Strg-C laufen, sehen Sie die Stack-Trace und wiederholen Sie diese vielleicht 4 mal.

Wenn Sie sind immer in dem gleichen Teil des Codes dann haben Sie gefunden, wo Sie wahrscheinlich die meiste Zeit verbringen.

Sie wollen klar zwei Dinge:

  1. Ihr Code zum Profil und messen es.

  2. Bereiche erkennen, die optimiert werden können.

Das sind verschiedene Probleme. Sie sind nicht die gleichen, trotz allem, was Sie gesagt haben kann.

Für Problem (1) viele gute Profilometer vorgeschlagen werden.

Problem (2) Profilometer helfen nur indirekt.
Es gibt eine viel einfachere und in der Regel effektive Technik.

Here Schauen Sie sich

Im gonna go mit gprof / oprofile, wenn wir über die UNIX-Welt sprechen.

Sie müssen Ihre Anwendung (zumindest mit gprof) neu zu kompilieren.

gprof

Oprofile

Wenn Sie unter Windows sind, dann schlage ich vor, AQTime . Unterstützt fast jeder Compiler gibt, einschließlich .NET, Delphi und VB (und alle C ++ Compiler, natürlich (;..) Und ist einfach das beste Profilierungswerkzeug ich je ausprobiert Und es ist nicht nur eine Performance Profiler

Für die Performance- oprofile ist eine gute Wahl, da es ein benutzerfreundliches Plug-In für Eclipse in der Linux tools Projekt .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top