Rubyにjemallocを組み込もうとしたが、うまく行っていない
NyaRuRuさんの日記を読んで(http://d.hatena.ne.jp/NyaRuRu/20080327/p1)、jemallocの入手先が分かったので、Rubyに組み込もうとしました。結果うまく行っていません。
やったこと、
- NyaRuRuさんのページの情報を元にFireFox 3.0b4のソースを入手し、その中のmemory/jemalloc.cをチェック
- とりあえず、gcc -c -DMOZ_MEMORY jemalloc.cとコンパイルしてみる
- ヘッダファイルがないとか色々怒られる。適当にプログラムを修正してなんとか強引にコンパイルを通す
結局、こんなコードがコンパイルできず残りました。
#ifdef MOZ_MEMORY_WINDOWS VirtualAlloc(chunk, size, MEM_RESET, PAGE_READWRITE); #elif (defined(MOZ_MEMORY_DARWIN)) mmap(chunk, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0); #else madvise(chunk, size, MADV_FREE); #endif
うーん、これをCygwinで実現する方法を調べる必要がありそうです。出来るのかなー?
別のOS(Windowsネイティブも含む)だとあっさり組み込めるような気もします。ソースをチラッと見た範囲ではMozillaに依存した記述は見当たらないようだし。