4

私は、サイズが 2k から 100k の範囲の約 9000 個のオブジェクト、合計で約 0.5 ギガの小さな .mat ファイルを多数格納する最善の方法を決定しようとしています。

典型的な使用例は、一度に少数 (たとえば 10 個) のファイルをディスクから取得するだけでよい場合です。

私が試したこと:

方法 1: 各ファイルを個別に保存すると、パフォーマンスの問題が発生します (保存時間が非常に遅くなり、その後しばらくの間システムが遅くなります)。Windows 7 では処理が困難なため、フォルダー内のファイルが処理されない可能性があります (そして、私の SSD は苦労していると思います)。それも)。ただし、最終結果は問題ありません。必要なものを非常に迅速にロードできます。これは「-v6」保存を使用しています。

方法 2: すべてのファイルを 1 つの .mat ファイルに保存してから、必要な変数だけを読み込むと、アクセスが非常に遅くなります (読み込みには、ファイル全体を読み込むのにかかる時間の約 4 分の 3 の時間がかかります。保存の順序)。これも「-v6」保存を使用しています。

ファイルを多くのフォルダーに分割できることはわかっていますが、それは非常に厄介なハックのように思えます (そして、SSD が多くの小さなファイルを書き込むのを嫌うのは修正されません)。より良い方法はありますか?

編集: オブジェクトは、主に double データの数値行列とそれに付随する uint32 識別子のベクトル、および多数の小さな識別プロパティ (char および数値) で構成されます。

4

3 に答える 3

0

私が思いついた解決策は、それぞれ約 100 個のオブジェクトのオブジェクト配列を保存することです。これらのファイルは 5 ~ 6 MB になる傾向があるため、読み込みは難しくなく、アクセスは適切な配列を読み込んで目的のエントリにサブセット化するだけです。この妥協により、小さなファイルを大量に書き込むことが回避され、単一オブジェクトへの高速アクセスが可能になり、余分なデータベースやシリアライゼーションのオーバーヘッドが回避されます。

于 2011-08-16T17:58:51.657 に答える