Haben Sie ein Profiling-Tool wie den Intel Vtune Analyzer verwendet?
Was sind Ihre Empfehlungen für eine C ++ - Multithread-Anwendung unter Linux und Windows? Ich bin hauptsächlich an Cache-Misses, Speicherauslastung, Speicherlecks und CPU-Auslastung interessiert.
Ich benutze Valgrind (nur unter UNIX), aber hauptsächlich um Speicherfehler und Lecks zu finden.
Im Folgenden sind die guten Werkzeuge für Multithread-Anwendungen. Sie können die Testversion testen.
BEARBEITEN : Der Intel Thread Checker kann verwendet werden, um Datenrennen, Deadlocks, festgefahrene Threads, abgebrochene Sperren usw. zu diagnostizieren. Bitte haben Sie viel Geduld bei der Analyse der Ergebnisse, da es leicht zu verwirren ist / p>
Einige Tipps:
Unter Linux versuchen Sie oprofile . Es unterstützt verschiedene Leistungsindikatoren.
Unter Windows ist AMDs CodeAnalyst (kostenlos, im Gegensatz zu VTune) einen Blick wert. Es unterstützt jedoch nur Event-Profiling auf AMD-Hardware (auf Intel-CPUs ist es nur ein praktischer Timer-basierter Profiler).
Ein Kollege hat kürzlich versucht, Intel Parallel Studio (beta) zu testen und hat es positiv bewertet (es fand einige interessante Parallelismus-Probleme in einigen Code).
VTune gibt Ihnen eine Menge Details darüber, was der Prozessor macht und manchmal fällt es mir schwer, das Holz für die Bäume zu sehen. VTune meldet keine Speicherlecks. Sie müssen dafür reinigen, oder wenn Sie auf einer Linux-Box laufen können, ist valgrind gut für Speicherlecks zu einem günstigen Preis.
VTune zeigt zwei Ansichten, eine ist nützlich die tabellarische, die andere ich denke, ist nur für Verkäufer, um Menschen zu beeindrucken, aber nicht so nützlich.
Für eine schnelle und billige Option würde ich mit Valgrind gehen. Valgrind hat auch einen Cache-Grind-Teil, aber ich habe es nicht benutzt, aber vermute es ist auch sehr gut.
Prost, Martin.
Ich werde eine andere Antwort für valgrind einfügen, insbesondere den Callgrind-Teil mit der Benutzeroberfläche. Es kann mehrere Threads verarbeiten, indem es jeden Thread für Cache-Misses usw. profiliert. Sie haben auch einen Multithread-Fehlerprüfer namens helgrind, aber ich habe ihn nie benutzt und weiß nicht, wie gut er ist.
Sie können den CPU Profiler von AMD CodeXL testen. Es ist kostenlos und für Windows und Linux verfügbar.
Der CPU-Profiler von AMD CodeXL ersetzt das nicht mehr unterstützte CodeAnalyst-Tool (das in der obigen Antwort von timday erwähnt wurde).
Weitere Informationen und Download-Links finden Sie auf der AMD CodeXL-Webseite .
Die Rational PurifyPlus -Suite umfasst sowohl einen bewährten Leckdetektor als auch einen ziemlich guten Profiler. Ich bin mir nicht sicher, ob es bis auf die Ebene der Cache-Misses geht, aber - VTune könnte dafür nötig sein.
PurifyPlus ist sowohl auf verschiedenen Unices als auch auf Windows verfügbar, so dass es Ihre Anforderungen abdecken sollte, aber im Gegensatz zu Valgrind ist es leider nicht kostenlos.
Tags und Links c++ multithreading profiling performance