SSD ディスクに多数の小さなファイルを作成する際のパフォーマンスを最適化しようとしています。
ConcurrentBag<string[]> cb = new ConcurrentBag<string[]>();
cb.AsParallel().ForAll(fa => File.WriteAllText(fa[0], fa[1]));
ConcurrentBag<string[]>
= 80048の合計数は、cb.Sum(gbc => Encoding.UTF8.GetByteCount( gbc[1] ) );
393441217 バイトを返します。
他の場所で を実行するxml.Save();
と、〜 750MB のファイルが作成されます。
最初の状況は、完了するまでに 3 分 30 秒かかります。2 番目の 20 秒。
すべての個別の書き込み操作を処理するためのオーバーヘッドがあることは理解していますが、それでも 3 分 30 秒は少し長いようです。私はすでに forall で並列化を試みましたが、これはかなり役に立ちました (それ以前は、完了するまでに 6 ~ 8 分かかりました)。一括ファイル作成のパフォーマンスを最適化するために、コードに他にどのような変更を加えることができますか?