0

私は1つのディレクトリ(多くの子ディレクトリを持つディレクトリ)に何百万ものファイルを持っています.これらのファイルはすべて小さなファイルです.

私は2つの課題があると思います:

  1. ディレクトリをトラバースしてすべてのファイルを見つける方法。「FindFirstFile/FindNextFile」の方法を試してみましたが、遅すぎるように感じます。Windows Change Journalを使用する必要がありますか?

  2. すべてのファイル名を見つけたら、ファイル全体をメモリに読み込んで解析する必要があります。FILE_FLAG_SEQUENTIAL_SCAN フラグを使用する必要がありますか? またはより効率的な方法はありますか?

4

3 に答える 3

0

NTFS、または実際には特殊化されていないファイルシステムは、何百万もの小さなファイルで遅くなります。それがデータベースの領域です。

ファイルが実際に小さい場合、ファイルをどのように読むかはまったく問題ではありません。間接費が支配的になります。2 番目のスレッドを使用する価値はあるかもしれませんが、3 番目のスレッドがさらに役立つ可能性は低いです。

また、FindFirstFileEx検索を高速化するために使用します。別のファイル名は必要ありませんが、より大きなバッファーを好むでしょう。

于 2013-09-18T06:42:04.770 に答える
0

キックするためのいくつかのアイデア..

私が恐れているのは、ファイルのコンテンツをメモリにロードすると、サーバーのメモリがすぐに不足することです。問題のファイルを見つけて、結果を解析して解釈できるログまたはレポートに書き込む必要があります。

于 2013-09-18T05:55:13.080 に答える