伏字検索の検索方法を改善しました。
従来の伏字検索○○○はメモリ上に展開した巨大なテキストを
頭から比較(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
劇的に速くなりました。
今日の教訓:データ構造重要
ご利用くださいまし.