У меня есть несколько аудиофайлов (около 400 ГБ), которые я хочу преобразовать в другой формат.Я написал код преобразования и вызывал его параллельно для каждого файла в каждом каталоге, но он работает немного медленно (например, 50 ГБ за 4 часа).
Не могли бы вы дать совет, как ускорить этот вызов?
// Recursivly find all directories in given path
DirectoryFinder finder = new DirectoryFinder();
List<string> dirs = finder.GetDirectories(inPath);
Parallel.ForEach(dirs, (dir) => {
var files = Directory.GetFiles(dir, "*.vox");
Parallel.ForEach(files, (file) =>
{
try
{
VoxDecoder.DecodeFile(file);
} catch (Exception e)
{
Console.WriteLine(e.Message);
}
});
});
E:
Просто добавьте еще немного информации: Скрипт преобразования не может быть хорошо оптимизирован, потому что это сторонняя библиотека.Я думаю, что есть некоторые недостатки в ThreadPool, потому что вначале он работал довольно быстро, а теперь он замедляется к тому времени.
Использование оперативной памяти составляет около 400-600 МБ / 16 ГБ, высокая загрузка ЦП (около 100%)он заблокирован на 435 потоках.
Мне просто интересно, почему при запуске он был очень быстрым, а теперь очень медленным.
Спасибо всем.