Как грамотно использовать много-поточность что бы обрабатывать большие текстовые документы. Допустим у меня есть документ .txt в котором каждый символ 4 нужно заменить на четыре или D на Д и т.д. т.к. файлы очень большие то обработка такого числа символов(от 10 000 до 1 000 000) затягивается надолго. Использовать много поточность или как то иначе сократить время обработки?
Читаем файл :
string document = File.ReadAllText(Path);
string[] Mass = document.Split(' ');
далее в цикле обрабатываем каждый элемент массива Mass
Вы делаете очень неоптимально: чтение всего файла в память и разбиение на строки создаёт много ненужных объектов, и нагружает память.
Попробуйте читать файл через File.ReadLines (ни в коем случае не через ReadAllLines!), обрабатывать построчно и записывать построчно в новый файл.
Например:
File.WriteAllLines(
"newfile",
File.ReadLines("oldfile").Select(ProcessLine));
с функцией
string ProcessLine(string s)
{
// обрабатываем одну строку и возвращаем результат
}
Во первых, используйте асинхронный доступ к файлам, чтобы высвобождать потоки обратно в пул и занять их другой работой, при активации IO потока.
Во вторых, прочитав содержимое, используйте Task.Parallel.Library для параллельного поиска в строках по файлу. (Parallel.ForEach)
Дальше, асинхронная запись целого файла.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости