google-perftoolsをVisual C++ 2005で使用し tcmallocを使ってみる
google-perftoolsをVCで使ってみようとググッたけど、VCでのサンプルがあまりないので困った。
exampleにはgccの例しかないし。
ダウンロードしたファイルに、README.windowsというのがあったので読んでみる。
VC++7,VC++8で使えるらしい。ただ、VC++7は__VA_ARGS__がサポートされてないので注意しろと書いてある。可変引数のマクロだっけか。
VCでは、
heap-profilerとcpu-profilerとleak-checkerはまだ使えないらしい。(1.0時点)
つまり、tcmallocしか使えない。
この時点でやる気半減。
google-perftoolsのインストール
以下にてgoogle-perftoolsをダウンロード
google-perftools - Google Code
http://code.google.com/p/google-perftools/downloads/list
この時点でのバージョンは1.0
とりあえずコンパイルしてみる。
google-perftools.slnを開いてソリューションのビルド。
なんなく完了。
とりあえず、VC++にReleaseディレクトリとsrcディレクトリを登録。
かんたんなテスト
とりあえずテスト用のコンソールアプリを新規作成。
libtcmalloc_minimal.libをリンカに追加。
リンカの設定のシンボル参照の強制に_tcmallocを追加し、テストアプリと同じフォルダにlibtcmalloc_minimal.dllを追加。
スタティックリンクしたい場合はunittestのコードを参照しろとのことだけど面倒なのでパス。
#include <tcmalloc.h> #include <boost/timer.hpp> int main (int argc, char** argv) { boost::timer t; int i,j; for (i = 0; i < 1000; i++) { for (j = 0; j < 1000; j++) { char *p = (char *) malloc (1024 * 1024); free (p); } } printf("%f[sec]\n",t.elapsed()); return 0; }
コンパイル。
google-perftools-1.0\src\tcmalloc.h(37) : fatal error C1083: include ファイルを開けません。'config.h': No such file or directory
怒られた。
includeに、\src\windowsフォルダも登録しなくてはいけないらしい。これもVCに登録し、再度ビルド。
補足
newとdeleteでもちゃんと適用されてた。