gperf

完全ハッシュ関数を作ってくれるgperfを使ってみた。

色々なサイトを頼りになんとか使えるようにはなったんだけど、取っ掛かりはここだった。
http://blog.broomie.net/index.cgi?id=14

ちょっと良く分からないのが完全ハッシュ関数で重複が無いなら、wordlist に key まで含める必要無いのになぁと思った。
value が重複するケースの処理も出来るようにって事なのかもしれないけれど。。in_word_set 関数は key の比較まで行っているわけだし。。
でもなぁ。。keyまで持つと容量が増えてしまうよ。

ビルド環境がしっかりしてない場合は、データが差し替わる度に完全ハッシュ関数を作り直すのが手間になる。

開発時のちょっとしたデータ更新の度にデータだけ入れ替えたい事があるので毎回ビルドは駄目だ。CMPHなら実行時に処理できるライブラリの機能を備えてるっぽいけどライセンスがMPLだ。

となると性能は完全ハッシュ関数より悪くても普通のHash関数の方が良いかもしれない。でも衝突のケース考えるとなぁ。。まぁそれはHashテーブルのライブラリがしっかりしてれば問題無いか。。。

unmapはどうなんだろうか?
https://github.com/tanaton/unmap#readme

うーん、もうちょっとコンパクトなのを。。。

っていうか開発が落ち着いたら、gperfで最適化したのに置き換えれば良いのかも。