Если у вас есть весь файл, считанный в строку, вам, вероятно, следует использовать StringReader .
StringReader reader = new StringReader(fileContents);
string line;
while ((line = reader.ReadLine()) != null) {
// Process line
}
Это должно быть примерно так же, как потоковая передача из файла с той разницей, что содержимое уже находится в памяти.
Редактировать после тестирования
Попытка выше с файлом 140 МБ, где обработка состояла из увеличения переменной длины с помощью line.Length. Это заняло около 1,6 секунд на моем компьютере. После этого я попробовал следующее:
System.IO.StreamReader reader = new StreamReader("D:\\test.txt");
long length = 0;
string line;
while ((line = reader.ReadLine()) != null)
length += line.Length;
Результат составил около 1 секунды.
Конечно, ваш пробег может отличаться, особенно если вы читаете с сетевого диска или ваша обработка занимает достаточно много времени для поиска жесткого диска в другом месте. Но также, если вы используете FileStream для чтения файла и не буферизуете. StreamReader обеспечивает буферизацию, которая значительно улучшает чтение.