ウェーブレット行列とウェーブレット木の性能比較をしてみた

FM-Indexで用いる簡潔データ列としてウェーブレット行列とウェーブレット木のどちらがいけてるのかを調べてみた。


データは以下の実験で用いた住所データを使った。

http://d.hatena.ne.jp/echizen_tm/20120215/1329315913

データサイズは

ウェーブレット行列: 5, 693, 256 byte
ウェーブレット木: 5, 709, 560 byte

となった。ビット列のセパレータ数が少ないぶんウェーブレット行列のほうがやや小さい。

速度についてはsample/search_fm_indexを用いてインデックスした住所データ(118,073件)をシャッフルしたものをクエリとして全件検索にかかる時間を測った。

$$ time sample/search_fm_index var/zenkoku.key.fm.wm m y < var/zenkoku.shuf 

real	0m22.376s
user	0m22.328s
sys	0m0.045s


$$ time sample/search_fm_index var/zenkoku.key.fm.wt t y < var/zenkoku.shuf 

real	0m25.228s
user	0m25.147s
sys	0m0.067s

というわけでウェーブレット行列のほうが速い様子。
以上。
データサイズ・速度・実装の簡単さ、あらゆる点でウェーブレット行列のほうがよさそう。