(続)LOUDSトライのライブラリの性能を比較してみた

LOUDSトライを比較した記事を書いたところ@overlast氏からwikipediaタイトルのような偏りの少ないデータでも評価してはどうか、という賢明なアドバイスを頂いたので試してみた。

LOUDSトライのライブラリの性能を比較してみた - EchizenBlog-Zwei

http://dumps.wikimedia.org/jawiki/latest/

からwikipediaタイトルを取得した。

$$ wc -l jawiki-latest-all-titles-in-ns0 
1231018 jawiki-latest-all-titles-in-ns0

約123万件ある。これを用いてトライを作成すると以下のようなデータサイズとなった。

元データ		: 26960268 byte
marisa-trie	: 7,199,728 byte
ux-trie		: 10,364,932 byte
erika-trie		: 18,866,382 byte

共通部分の多い住所データに比べると圧縮率は低いが、それでも元データに比べると十分小さくなっている。またライブラリの性能差は住所の場合とほぼ同じ。
次にcommon-prefix-searchについて。

marisa-trie	: 11.9 sec
ux-trie		: 57.2 sec
erika-trie		: 20.7 sec

最後にpredictive-search

marisa-trie	: 13.5 sec
ux-trie		: 45.8 sec
erika-trie		: 28.4 sec

どちらの検索も、データ量がおよそ10倍になっているため線形に検索時間が増加して10倍程度の時間がかかっている(erikaはpredictive-searchが10倍より遅いが、これはerikaのpredictive-searchが文字列をstringで返しているからかも。erikaではreverse-lookupのコストが大きいのでこういう仕様になっている)。
というわけで今回の実験でもmarisa大勝利だった。すごい・・・。