2

長年のウォッチャーであり、これが私の最初の投稿ですので、気楽に行ってください。私は周りを見回しましたが、私のクエリは非常に具体的であり、他の場所で見つけることができません。

2つのコントロールで構成されるアプリケーションがあります。

  • 左側のコントロールには、XMLファイルからマップされた検索を表示するツリービューが含まれています。各検索にはGUIDが関連付けられています。
  • 右側のコントロールにはデータグリッドが表示されます。このデータグリッドの情報は、ディクショナリ(Guid <->データセット)を介してツリービューから取得します。

ユーザーがツリービューでノードをクリックすると、アプリケーションは検索がリンクされているGUIDを特定し、フラット化されてデータグリッドに表示される関連データセットを表示します。

アプリケーションを終了/ロードするときに、辞書をそれぞれ保存(シリアル化)およびロード(逆シリアル化)します。

私は最近いくつかのメモリプロファイリングを行いました。大規模な検索の場合、辞書のメモリフットプリントは、実際に整理する必要があるユーザーマシンの容量が限られているため、非常に大きくなる可能性があります(200mb)。

誰かがこれを達成する方法を知っているかどうか疑問に思いました。

Serialisable Dictionaryを構成データセットに分割し、それぞれをハードドライブに個別に保存することを考えていました(おそらくファイル名としてGUIDを使用)。保存されたデータセットは、Node.Clickイベントごとに逆シリアル化され、グリッドビューに表示されます。これについての私の心配は、古い検索を保存して新しい検索をロードするときに、各クリックイベントの間に一時停止する可能性があることです。

4

1 に答える 1

1

簡単な答えは、辞書とデータセットをSqliteファイルに入れます。(または他のdb)少し遅くなりますが、妥当な時間内にコードを渡すことができるどのコードよりも速くなると思います。正しく使用された場合、dbレイヤーは、UIの応答性を高めるために、メモリのバッファリングとキャッシュを実行します。

于 2012-07-16T01:03:37.043 に答える