続・鳩丸高速化計画その6・メモリ上に XmlDocument を保持する
2003年12月28日(日曜日)
続・鳩丸高速化計画その6・メモリ上に XmlDocument を保持する
こんな感じに。
- HatomaruDataHolder クラスを作成。これは NameObjectCollectionBase の派生クラスで、XmlFile のコレクションを持ちます。GetXml() メソッドにファイル名を渡すと、ファイル名をキーとする XmlFile のエントリが作成されて Load() されます。しかし、既にそのエントリが存在していて、かつファイルが更新されていない場合、Load() しないでそのまま返します。
- Hatomaru クラスは、この HatomaruDataHolder を静的メンバとして持ちます。HatomaruDataHolder のコンストラクタは Hatomaru クラスが初期化されるときに呼び出され (インスタンスが初期化されるときに、ではないことに注意)、以後ずっとメモリに残ります (たぶん)。
これによって、メモリ上に XmlDocument (の、派生クラスである XmlFile) のインスタンスが保持されたままになっているので、いちいち Load() しなくて済むようになった……と思います。
※FileInfo を Refresh() するのを忘れていてハマりましたが、まあ何とか。
あとは、やはりコメントの検索に時間がかかっているので、ここを何とかする必要があります。いちいち掲示板のコメント約 1500件を検索し、これに約15秒 (!) かかっているので遅いです。ここは、データ構造をどうにかしないとどうにもならないわけで……。
- 「続・鳩丸高速化計画その6・メモリ上に XmlDocument を保持する」にコメントを書く
関連する話題: C# / プログラミング / えび日記 / hatomaru.dll / 鳩丸高速化計画
- 前(古い): 続・鳩丸高速化計画その5・いろいろ見直し
- 次(新しい): 続・鳩丸高速化計画その7・日記関係