1

(VB).NET (4.0 フレームワーク) ではDictionary<string, string>、コンテンツを効率的に保存できる が必要です。または、内部表現をファイルに保存して後で読み込む必要があります。

Ruby の PStore にはそのような機能があります。 ruby​​ docsを参照してください。

その意図は、データベースからテキスト翻訳などのルックアップ辞書を一度準備し、それをディスク ファイルに保存して、出力生成のために複数回すばやくロードできるようにすることです。したがって、これはファイルを 1 行ずつ読み取ってディクショナリにキーと値のペアを入力するのではなく、ファイルの内容を 1 回で直接内部状態表現にロードする必要があります。

これは可能だと思いますが、そうでない場合は説明もご覧ください。

4

2 に答える 2

2

私がコメントしたように、あなたが得る利益は、実装するための努力に勝ると思います. BerklyDBまたはHamsterDBを調べることをお勧めします。どちらも数分でググってみました。

本当に何かを手動で実装したい場合は、Marshalクラスを使用して独自のメモリマネージャーを記述して、ファイルバッキングとの間ですばやくマーシャリングできる連続したブロックにデータ構造が格納されるようにするのではなく、永続的なメモリ マップ ファイルを使用します。その後、CreateViewAccessorMemoryMappedViewAccessorを使用して、プリミティブおよびデータ構造の読み取りと書き込みに使用できるインスタンスを取得できます。これを大学のテキストやB ツリーなどのオープン ソース実装と組み合わせると、何かが機能するようになります。

于 2013-03-18T16:07:35.017 に答える
1

この特定のタスクを本当にシンプルにしたい場合は、次のようにします。

class Pair {
    public string Key { get; set; }
    public string Value { get; set; }
}

var dict = new Dictionary<string, string>() {
    {"asd", "zxc"},
    {"111", "zzs"}
}; // Populate your dictionary somehow
var list = dict.ToList().Select( p => new Pair() { Key = p.Key, Value = p.Value} );
//Then XML-serialize this list

それを読むには:

//De-XML-serialize that list
dict = list.ToDictionary( p => p.Key, p => p.Value );

副次的な利点は、保存されたリストをテキスト エディターだけで変更できることです。

于 2013-03-14T10:04:25.513 に答える