2013-03-18 4 views
5

高性能マルチスレッドプログラムを構築しています。いくつかの関数の持続時間と実行回数の重複がたくさんあり、何らかの関数が始まった時刻とその期間を示す視覚的なタイムライングラフを何らかの形で生成したいと考えています。私は、NVIDIAプロファイラのグラフに似た何かを望みます。 boost::chronoパッケージを使用して私はすでにタイムラインを収集していますが、それらをプロットするソフトウェアやAPIは見つかりません。誰も知っていますか?グラフィカルタイムライン作成ソフトウェアマルチスレッドのC++プログラムをプロファイリングするためのAPI

よろしく

ダニエル

+0

どのランタイムプラットフォームを使用しますか? – yohjp

+0

openglが既に知っているのであれば、それをあなたのレンダリングに使ってみませんか?あなたのプログラムがCPUにバインドされている場合、その解決策はあなたのプログラムに大きなオーバヘッドを与えるべきではありません。 – didierc

+0

@yohjp ...残念ながら、私はLinuxでC++を使用していると言ったことを忘れていましたが、期限内にWindowsでもコンパイルできるようにコードの互換性を維持したいと考えています – Daniel

答えて

1

kcachegrindを見てください、私はそれが何をしたいんだと思います。ここにいくつかはscreenshotsです。

callgrindを使用したくない場合は、自分でグラフを生成したい場合は、Graphvizの使用を検討してください。 graphvizでグラフを作成するために必要なのは、単純なテキスト形式でグラフの説明を作成することだけです。

+0

はきれいに見えます。 – didierc

+0

alookを持っていますが、リリースのためにevnが必要な解決策が必要です。つまり、-gオプションはありませんが、むしろ-O3 .. kcachegrindは-gと一緒にしか使えませんか? – Daniel

+0

私はすべてのvalgrindツールは '-g'と無関係だと思います。 '-O3'と' -g'で同時にコンパイルできることに注意してください。 – piokuc

-1

「Microsoft Visual Studio 2012 Professional(またはそれ以上)」があり、Windowsでプログラムを実行している場合は、Concurrency Visualizerが便利です。このツールは、C++アプリケーションでも、タイムライン上のスレッド/ CPU使用率をプロファイリングして視覚化することができます。

も参照してください。MSDN Blogsを参照してください。

関連する問題