FileStream.Write
в основном то, что есть. возможно , что поможет BufferedStream
, но вряд ли.
Если вы действительно читаете одну строку текста, которая при кодировании занимает 500 МБ, то я не удивлюсь, обнаружив, что большую часть времени тратится на выполнение кодирования. Вы должны быть в состоянии проверить это, выполнив кодирование, а затем выбросив результат.
Предполагая, что выполняемая вами "кодировка" - просто Encoding.GetBytes(string)
, вы можете попробовать использовать StreamWriter
, чтобы обернуть FileStream
- он может работать лучше с помощью таких хитростей, как многократное кодирование в одном массиве перед записью в файл.
Если вы на самом деле читаете строку за один раз и добавляете ее в файл, то:
Очевидно, что лучше держать входной и выходной поток открытыми на протяжении всей операции. Не читайте, а потом пишите.
Вы можете повысить производительность, используя несколько потоков или, возможно, асинхронный ввод-вывод. Это будет частично зависеть от того, читаете ли вы и пишете на один и тот же диск.
Использование StreamWriter
, вероятно, все еще хорошая идея.
Кроме того, при создании файла вы можете захотите взглянуть на использование конструктора, который принимает FileOptions
. Поэкспериментируйте с доступными опциями, но я подозреваю, что вам понадобятся SequentialScan
и , возможно WriteThrough
.