Существует много разных способов чтения и записи файлов в .NET. Я написал тестовую программу и опубликовал результаты в своем блоге:
http://designingefficientsoftware.wordpress.com/2011/03/03/efficient-file-io-from-csharp
Я рекомендую использовать методы Windows ReadFile и WriteFile, если вам нужна производительность. Избегайте любых асинхронных методов, так как мои результаты тестов показывают, что вы получаете лучшую производительность с синхронными методами ввода-вывода - по крайней мере для FileStream, который является самым быстрым классом .NET для чтения файлов в. Я написал класс в C #, который инкапсулирует функциональность функциональность ReadFile и WriteFile, которая делает его довольно простым в использовании.
Другим интересным результатом является то, что он выглядит как чтение строк .vs. чтение данных в блоках по 65 536 байт каждый и разбивка их на строки. Оказывается, что чтение данных в блоках и последующее их разбивание на строки внутри вашей программы более эффективно. В моей загрузке есть несколько примеров того, как это сделать.
Мне бы очень понравилось, если бы вы скачали его, попробовали и сообщили об этом либо здесь, либо оставили комментарий в моем блоге, если он быстрее, чем StreamReader. Согласно моим ограниченным тестам, это значительно быстрее.
Еще одна идея для повышения производительности вашей программы - создать несколько потоков и заставить каждый поток обрабатывать файл. Поскольку вы сказали, что у вас есть несколько больших файлов, я бы разбил их так, чтобы у каждого большого файла был отдельный поток.
Если вы много работаете со строками, то вам определенно следует использовать StringBuilder. Но, возможно, более эффективным способом было бы считывание данных в байтовый массив, а затем построение байтового массива для вывода. Я был бы удивлен, если бы это было не более эффективно, чем использование StringBuilder.
Боб Брайан MCSD