3

1 つのフォルダーに 814,652 個の XML ファイルがあり、ファイルの名前は 1 から 814,652 までの整数です。

私のアプリケーションでは、いくつかのxmlファイルをデータテーブルにロードしますが、ロードは瞬時ではなく、最大3秒の遅延があります。

フォルダーに含まれるファイルが多すぎるためですか?

ファイルを複数のフォルダに分割できれば、速度は上がりますか?

単純に、データグリッドで選択した行から取得したファイル名に基づいて、一度に 1 つずつ読み取ります

ファイル リストをループする必要はないことに注意してください。必要なのは、指定したファイル名をロードすることだけです。

 int filename = ;//get the value from the focused row in the datagrid
 mydatatable.ReadXml(path + @"\xmlfiles\" + filename + ".xml");

update : ファイルをサブフォルダーに分割し、フォルダーごとのファイル数を最小限に抑えると、さらに遅くなります。

4

2 に答える 2

1

NTFS ファイル システム (FAT32 では 1 つのディレクトリに 800k ファイルを保持できない) を使用していると仮定して、この投稿では、いくつかのメトリックと提案と共に、質問に対する回答を提供します。いいえ、いくつかのディレクトリに分割しても、パフォーマンスが低下するだけです。

私の意見では、すべてのファイルを 1 つに結合してメモリにマップするか、データベースなどの迅速なインデックス作成とアクセスのために特別に設計された、より便利なストレージを使用する方がよいでしょう。

于 2013-04-11T19:01:25.883 に答える
0

最終的に、SQL サーバーを使用してファイルをテーブルに分割し、EXI を使用して XML を圧縮しました。

于 2013-04-12T14:18:03.380 に答える