0

コンビネーションジェネレーターを作っています。少量の要素の場合、データがファイルではなく RAM メモリに保存されることは、コンピューターにとって問題ではありません。しかし、要素の数が増えると、コンピューターのメモリが不足します (例外 OutOfMemoryException が発生します)。組み合わせは、現在別のリストに保存されているリストに保存されている数値です。

しかし、これは最初のステップにすぎません。ジェネレーターは正しく動作します。データをファイルに保存し、そこから別のプログラムが必要な組み合わせを抽出できるようにしたいと考えています。ほとんどの場合、データを別のファイルに保存する必要があります。これは、ジェネレーターが将来的にますます多くの組み合わせを作成できるようにする必要があるためです。コンピュータは、データの特定の部分を読み取る必要がありますが、一時メモリ内のすべてをコピーすることは不可能です。

データをテキストに変換したくありません。また、必要に応じてテキストをデータに変換したくありません。これにより、変換のために処理が遅くなると思います。リストをカスタムメイドのファイルに保存し、そこからプログラムが変換せずにデータを直接抽出できるようにしたいと考えています。

4

4 に答える 4

3

利用可能なオプションはたくさんありますが、いくつか簡単に説明します。

  • データベースを使用します。あなたの説明から、これは良い選択のようには見えませんが、すべてのクライアントの相対性理論の高速で効率的なストレージにとって最も柔軟です。

  • 説明から.netシリアライザーの1つを使用します。バイナリシリアライザーが最良の選択になります。セリザーは、相対性理論の多くの利点を迅速に提供し、サポートが組み込まれていて非常に使いやすい.netに組み込まれています。

  • カスタムバイナリ形式を使用します。これは、特にメモリマップトファイルと組み合わせる場合に最速のオプションになります。ただし、バイナリ形式は使いにくく、簡単に失敗する可能性があります。

于 2012-07-26T15:01:43.590 に答える
3

本当にデータをファイルに保存したい場合は、BinaryFormatterクラスを使用できます。これはおそらく、データ オブジェクトをバイナリ ストリームにシリアル化する最も効率的な方法です。

ただし、一度に保存してから長時間ロードする必要がない場合に限り、この方法で組み合わせを生成することはお勧めしません。組み合わせの遅延生成を使用することをお勧めします。「将来、より大きな組み合わせを生成する」必要なしに、1つずつ完全に生成されます(「最大の」必要な組み合わせを1つずつ生成します-生成アルゴリズムを少し変更したい場合があります-それを行う方法はすでにたくさんあります)

于 2012-07-26T15:03:08.830 に答える