fastutilをソースからビルドしてみた

fastutilはTroveなどと類似の高速コレクションライブラリです。

発想としてはプリミティブ型それぞれに最適化されたコレクションクラスの実装を提供するというもので、マップであればキーがintで値もintのマップ、キーがintで値はlongのマップ…という具合でキーと値の型の組み合わせ毎に実装が容易されているというものです。
試してみようと思ってバイナリのtarballをダウンロードしようと思ったらうまく展開できなかったので、ソースのtarballを落としてソースからビルドしてみようと思ってやってみたところ、びっくり。なんとビルドにはAntに加えてmakeとgccが必要でした。この膨大なコレクションクラスは手動で実装されているわけではなく、シェルスクリプトとCのプリプロセッサを使って自動生成されているようです。実際のビルド手順はこんな感じ。

$ cd tar xvzf fastutil-6.1.0-src.tar.gz
$ cd fastutil-6.1.0
$ make sources
$ ant

ソースの生成には結構時間がかかります。結果、コンパイル対象のソースは合計1775ファイル。ものすごい量です。Cygwinでビルドしたのですが、せっかくならソースの生成もAntタスクとかにしてJavaだけでビルドできるようにして欲しいなぁと思いました。