« はてなダイアリーキーワード | トップページ | UKblogの今後 »

2004.09.08

[修正]はてなダイアリーキーワード

>> はてなダイアリーキーワード
にて,一応公開したけど,遅いし,メモリ馬鹿食い
 
アルゴリズム的には,全然早いはずなんだけど,無駄にメモり喰っているせいで,全然速度でない……
多分メモリが無限にあれば大丈夫なはず。
といっても,無限にあるわきゃないんで,処理をなおしました。
 
#全体の96%のノードの要素数が0か1なのに256も用意しているもんだから……
#0→1→256って可変にするだけで,十分高速化できるんですが,
#↓みたいにキャッシュファイルができないんで,やめました。
 
データ構造を単純な昇順の配列+2分検索にした。
速度的には全然早いうえに,メモリーも消費しない。
加えて,単純な昇順の配列なんで,それをそのままキャッシュファイルに保存して,それをメモリマップファイルとして,そのまま使えるようになってます。
 
#途中本当に2分検索したら,全然最長一致にならなくてはまりました……
 
配列を保存したキャッシュファイルは,タイムスタンプを見て,自動変換してます。
このキャッシュファイルもひどく単純な構造で,↓な風にしました。
 

サイズ内容
DWORD1配列サイズ(count)
DWORDcount文字列へのオフセット
BYTE1文字列のサイズ(len)
BYTElen文字列
BYTE1終端(0x00)
count分繰り返し
つまり,
先頭をdatとすると,*(DWORD*)dat個の配列で,
n番目の文字列は,((DWORD*)dat)+1+nとなります。

>> はてなダイアリーキーワード自動リンクツール v1.0.0.1(.lzh)

|

« はてなダイアリーキーワード | トップページ | UKblogの今後 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/3881/1391081

この記事へのトラックバック一覧です: [修正]はてなダイアリーキーワード:

« はてなダイアリーキーワード | トップページ | UKblogの今後 »