У меня есть приложение, которое должно перебирать все строки в текстовых файлах размером более гигабайта. Некоторые из этих файлов содержат 10 или 100 миллионов строк.
Пример моего текущего (и синхронного) чтения выглядит примерно так ...
using (FileStream stream = new FileStream(args[0], FileMode.Open, FileAccess.Read, FileShare.Read)) {
using (StreamReader streamReader = new StreamReader(stream)) {
string line;
while (!string.IsNullOrEmpty(line = streamReader.ReadLine())) {
//do stuff with the line string...
}
}
}
Я прочитал кое-что о методах потоковой передачи асинхронного ввода-вывода .Net, и мне нужна помощь с двумя конкретными вопросами, касающимися этой проблемы.
Во-первых, получу ли я повышение производительности за счет асинхронного чтения этих файлов, если мне понадобится полнота каждой строки, обычно короткой, но разной длины (между каждой строкой в файле нет взаимосвязи)?
Во-вторых, как мне преобразовать приведенный выше код в асинхронное чтение, чтобы я мог обрабатывать каждую строку построчно, как сейчас?