伏字検索の検索方法を改善しました。

従来の伏字検索○○○はメモリ上に展開した巨大なテキストを
頭から比較(grep)するだけのプログラムでした。
検索性能が悪くて1秒を超えることもよくありました。

また検索性能の悪さをごまかすために検索結果を
キャッシュし、2回目以降の検索はキャッシュデータを
利用して早く見せかけていました。

今回採用したのはSuffix Arrayというデータ構造を利用した
saryというツールです。

Suffix Array¤Î´Êñ¤ÊÀâÌÀ
横着プログラミング 第9回: sary: Suffix Array のライブラリとツール

ベンチマークを取ってみたところ大幅に改善できました。
0.1秒を切ることができたので、キャッシュの処理は不要と考え
削除しました。

変更前

山田太郎 0.27338s
山○太郎 0.34138s
山田○郎 0.31219s
山田太○ 0.31457s

変更後

山田太郎 0.00044s
山○太郎 0.00345s
山田○郎 0.01584s
山田太○ 0.00017s

劇的に速くなりました。

今日の教訓:データ構造重要

ご利用くださいまし.