続・鳩丸高速化計画その11・高速化成功?
2004年1月15日(木曜日)
続・鳩丸高速化計画その11・高速化成功?
結局、こんな感じになりました。
- 掲示板のデータはファイルとしては XML で保存しておくけれども、メモリ上では DataTable (実際にはその派生クラス) に格納して保持しておきます。
- 掲示板のデータを使うときは DataTable.Rows.Find() または DataTable.Select() で該当するデータを引っ張ってきます。
- DataTable はメモリ上に置いておいて、再利用。静的メンバだと同じクラスを別の場所で使ったときなどに色々都合が悪そうな気がしたので、global.asax を利用する形にしました。
- データをロードした時刻を記憶しておきます。DataTable が呼ばれたとき、XML ファイルのタイムスタンプと比較して、古ければリロードします。
ちゃんと検証したわけではありませんが、感覚的にはかなり速くなりました。
以下は今後の課題など。
- 今のところ掲示板だけ DataTable 化してあります。問題なさそうなら (ThreadAbortException が出まくったりしなければ)、日記のデータも DataTable に入れるようにすればさらに速くなるハズ。
- 掲示板のスレッド表示に関しては、階層構造を DataTable に入れるのが面倒なこともあって XmlDocument から読んでくる従来の方法のままです。このままで良いのか、何とかした方が良いのか要検討。
- 記事投稿時に DataTable を更新する処理が未実装。現状では XML ファイルが更新された結果として、XML から全データがリロードされて更新されるようになっています。差分だけ DataTable に直接放り込めばもっと効率が良くなるはず。
- ……たぶん、そこら中にバグがあるでしょう。:-)
- 「続・鳩丸高速化計画その11・高速化成功?」へのコメント (3件)
関連する話題: C# / プログラミング / えび日記 / hatomaru.dll / 鳩丸高速化計画
- 前(古い): 全てが Google という時代は終わる?
- 次(新しい): Office Update でちょっぴり残念な思い