私は、年月に分割されたサブフォルダ内に200万のファイルを分散しています。 私が使用してファイルをループしています:サブフォルダのEnumerateFilesメモリ効率
foreach (string year_folder in Directory.EnumerateDirectories(data_path))
foreach (string month_folder in Directory.EnumerateDirectories(year_folder))
foreach (string file in Directory.EnumerateFiles(month_folder))
は、より多くのメモリ効率的である:
foreach (string file in Directory.EnumerateFiles(data_path, "*.*", SearchOption.AllDirectories))
iは、ネストされた構文を使用して設定列挙パーティショニングすることを期待できますか?
下記の私のコメントもご覧ください。
私が流暢なSystem.IOラッパーにこれを追加するより効率的な方法を見つけたら、本当にこの結果を聞きたいと思っています。 –
両方を試してみてください。両方のケースで書かれたコードを持っているので、それぞれを実行してプロファイルすれば確実に分かります。たとえ他の人がより良い理論を作っても、どれくらい*良いかを理論化することはむしろ困難です。むしろその差はあまり重要ではないほど小さいであろう。 – Servy
私が理解しようとしているのは、ループが最後の要素(2番目のアプローチを正当化する)を繰り返すまで、またはループ中にガベージコレクションが頻繁に行われるまで、IEnumerableセットがメモリを占有するかどうかです) – eyaler