[groonga-dev,01493] Re: groonga-3.0.3がmacのclangでビルドできません

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 6月 12日 (水) 10:23:50 JST


須藤です。

In <20130****@clear*****>
  "[groonga-dev,01441] Re: groonga-3.0.3がmacのclangでビルドできません" on Mon, 27 May 2013 11:24:16 +0900 (JST),
  Kouhei Sutou <kou****@clear*****> wrote:

>> 最新版のgroonga-3.0.3を手元のMac OS X 10.8.3でビルドするとき、
>> gccを使う場合は問題ないのですが、
>> clangを使う場合、プロセスがメモリを約1.7GBと大量に消費して
>> 途中から処理が進まなくなってしまいます。
> 
> あぁ、これはclangが最適化するときにたくさんメモリを消費する
> からなのです。手元のDebian GNU/Linuxでも再現しました。
> 
>   % clang -v
>   Debian clang version 3.2-6 (tags/RELEASE_32/final) (based on LLVM 3.2)
>   Target: x86_64-pc-linux-gnu
>   Thread model: posix
> 
> 以下のように最適化を無効にするとビルドできると思います。
> 
>   ./configure CFLAGS="-O0" ...
> 
> ただ、最適化にたくさんメモリを消費するファイル(lib/expr.cと
> lib/nfkc.c)は実行時によく使われる処理が入っているので、最適
> 化ありなしで結構速度に差が出てしまうのが悩ましいところで
> す。。。
> 
> あと、そこを越えてもその先で今度はビルドエラーになってしまい
> ました。。。前はclangでもビルドできたんですが、今はできなく
> なってしまったみたいです。

clangでのビルドエラーを直して、clangでビルドするとでてくる
warningも直した(一部、しょうがないやつは残っています)ら、問
題が再現しなくなりました。。。(メモリー不足で落ちることはな
くなった。)

clangのバージョンが少し上がっているのですが、たぶんそれは関
係ないはずです。

  % clang --version
  Debian clang version 3.2-7 (tags/RELEASE_32/final) (based on LLVM 3.2)
  Target: x86_64-pc-linux-gnu
  Thread model: posix

ただ、手元では最大で6GBくらいメモリーを使っていました。それ
より少ない環境ではまだ落ちる気がします。


どうしてこんなにメモリーを消費するかというとマクロを使って実
装している関数があって、その関数の中身がとても大きくなるから
です。これを関数ベースにしようと思っているのですが、実装を変
えて速度が落ちるとイヤなのでベンチマークをしながら徐々に変更
しようと思っています。ということをやると、そこそこ時間がかか
るので、次のリリースではとりあえずclangでビルドできる・
warningがほとんどない、という状態にします。

その先は、次の次のリリース以降でがんばりたいなぁ、という感じ
です。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index