Google Performance Tools を使ってみる

Google Performance Toolsっていうのが結構前からあって、ずっとバージョンアップを重ねていたりします。
http://code.google.com/p/google-perftools/
どんなものかというと、マルチスレッドでのメモリ確保や、CPUプロファイル、Heepプロファイルなど、パフォーマンスを上げるためのプロファイルに必要な情報を引き出すためのツールだったりします。
とりあえず、rpm版が使い易いので、rpmをダウンロードしてインストール。バージョンは安定してるやつの最新バージョンを取得。
### 追記 ###
openSUSE 11.0 だと、google-perftools google-perftools-devel というパッケージがあったので以下のコマンドでインストールできる。
yast -i google-perftools google-perftools-devel
######
wget http://google-perftools.googlecode.com/files/google-perftools-0.99.1-1.i386.rpm
wget http://google-perftools.googlecode.com/files/google-perftools-devel-0.99.1-1.i386.rpm
rpm -ivh ./google-perftools-0.99.1-1.i386.rpm
rpm -ivh ./google-perftools-devel-0.99.1-1.i386.rpm
それで、どんなもんかと試してみたいので、プログラムを準備。
今回は、CPU Profiler を試してみます。
CPU全体のProfileを取る時はこんな感じ。
-lprofilerをコンパイル時にリンクします。

env CPUPROFILE=/tmp/prof.prof ./prof.elf

場所を区切って取りたいときは
#include
ProfilerStart(“prof_file_name”);
// ここに処理
ProfilerStop();
といった感じになる。
で、ログを取ったら、それを元に分かり易く画像ファイルなぞを作成。
perl5と、gvとdotが必要。なかったらインストールを。
pprof –dot ./prof.elf /tmp/prof.prof > prof.dot
dot -T png prof.dot > prof.png
で、これがサンプル。実行したプログラムはこんな感じ。
prof
最初sleepでやったんだけれど、そりゃ、CPU負荷ないから出ないわw
って事で、ださいけれど、forでぐるんぐるん回してます。
内部処理を一つの関数に統一してしまうと、その関数の数字しかでなくなっちゃうから、わざとコピペで二つの関数に同じ実装しています。

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]

Spam Protection by WP-SpamFree