Profiling-C-code unter Windows bei der Verwendung von Eclipse
Weiß ich, Profil meine code mit gprof
und kprof
auf Linux. Gibt es eine vergleichbare alternative zu, diese Anwendungen auf Windows?
- Welchen compiler benutzt du unter Windows?
- Sie können die Nutzung von gprof unter windows mit dem MinGW-port des GCC-Compilers.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommerzielle software:
Freie software:
Diesen kommerziellen alternativen ändern Sie den kompilierten code von 'Instrumentierung' (hinzufügen von Anweisungen), um es und führen Sie das timing innerhalb der zusätzlichen Anweisungen. Dies bedeutet, dass Sie dazu führen, Ihre Anwendung zu verlangsamen ernst.
Diese Kostenlose alternativen nutzen, die Probenahme, das heißt, Sie sind weniger detailliert, aber sehr schnell. In der Praxis habe ich festgestellt, dass vor allem Sehr Schläfrig ist sehr gut, um einen kurzen Blick auf performance-Probleme in Ihrer Anwendung.
ERROR: SymGetModuleInfo64, GetLastError: 1114 (Address: 7C90E514)
Gibt es eine MinGW-port von gprof, der so funktioniert ungefähr das gleiche wie die Linux-Variante. Sie können entweder eine vollständige MinGW-installation (ich denke, gprof ist im Lieferumfang enthalten, aber nicht sicher) oder gprof aus der MinGW-binutils-Paket.
Für Eclipse, es gibt TPTP aber es keine Unterstützung für profiling von C/C++, soweit ich weiß.
Ja, Sie können den Profil-code mit Visual Studio
Was ist der Grund für die Profilerstellung? Wollen Sie a) Messen von Zeiten und Holen Sie sich ein call-graph, oder b) feststellen, Dinge zu ändern, um den code schneller? (Diese sind nicht das gleiche.)
Wenn (b) Sie verwenden können,dieser trick, mit dem "Pause" - button in Eclipse.
Hinzugefügt: Vielleicht würde es helfen, vermitteln einige Erfahrung, was die performance-Probleme eigentlich sind, wie und wo Sie erwarten können, um Sie zu finden. Hier sind einige einfache Beispiele:
Einer insertion sort (Ordnung n^2), bei der die Elemente sortiert sind strings, und die sind im Vergleich mit einem string-compare-Funktion. Wo ist der hot-spot? bei string-vergleichen. Wo ist das problem? In der Art, wo string-Vergleiche genannt wird. Wenn n=10 ist es kein problem, aber wenn n=1000, plötzlich, es dauert eine lange Zeit. Der Punkt, wo string-Vergleiche genannt wird, ist "kalt", aber das ist, wo das problem ist. Eine kleine Anzahl von Proben von den call-stack lokalisieren Sie es mit Gewissheit.
Einer app, lädt plugins dauert eine lange Zeit zu starten. Ein profiler sagt im Grunde alles, was es ist "kalt". Etwas, dass Maßnahmen, die I/O-Zeit sagt, es ist fast alle I/O-Zeit, die scheint, wie das, was man erwarten könnte, so könnte es scheinen hoffnungslos. Aber, stack Beispiele zeigen einen großen Prozentsatz der Zeit ausgegeben wird mit dem Stapel über 20 Ebenen tief in den Prozess des Lesens die Ressource Teil des plugin-dlls für die Zwecke der übersetzung von string-Konstanten in der lokalen Sprache. Genauer zu untersuchen, werden Sie feststellen, dass die meisten strings übersetzt wird, sind nicht der Art, dass eigentlich müssen übersetzung. Sie waren nur für den "Fall der Fälle", die Sie benötigen, übersetzung und wurden nie gedacht, um etwas, das könnte die Ursache eines performance-Problems. Die Festsetzung, dass die Ausgabe bringt eine stattliche Zeitersparnis.
So ist es üblich zu denken, im Sinne von "hotspots" und "Engpässe", aber die meisten Programme, vor allem die größeren, neigen dazu, performance-Probleme in form von Funktionsaufrufen ersuchenden arbeiten, die nicht wirklich erledigt werden müssen. Zum Glück zeigen Sie sich auf dem Aufruf-stack während der Zeit, die Sie verbringen.