Я пытаюсь оптимизировать производительность создания множества небольших файлов на 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();
, который создает файл ~ 750 МБ.
Первая ситуация занимает 3 минуты 30 секунд. Вторые 20 секунд.
Я понимаю, что есть некоторые накладные расходы для обработки всех отдельных операций записи, но 3 минуты и 30 секунд все еще кажутся немного длинными. Я уже пробовал распараллеливание с помощью forall, что очень помогло (до этого на это уходило 6-8 минут). Какие еще изменения я могу добавить в свой код, чтобы оптимизировать производительность массового создания файлов?