Я пишу небольшую библиотеку ввода-вывода, чтобы помочь с большим (хобби) проектом. Часть этой библиотеки выполняет различные функции в файле, который считывается/записывается через объект FileStream
. На каждом проходе StreamReader.Read(...)
Я запускаю событие, которое будет использоваться в основном приложении для отображения информации о ходе. Обработка, выполняемая в цикле, выполняется с сохранением, но не слишком трудоемка (может быть, например, простая копия файла или может включать шифрование...).
Мой главный вопрос: какой лучший размер буфера памяти использовать? Размышляя о макетах физического диска, я мог бы выбрать 2k, которые будут охватывать размер сектора компакт-дисков, и это краткий набор сектора жесткого диска размером 512 байт. Чем выше дерево абстракции, тем больше вы можете использовать буфер большего размера, который мог бы считывать весь кластер FAT за раз. Я понимаю, что на сегодняшнем ПК я мог бы использовать более голодный вариант памяти (например, несколько MiB), но затем я увеличиваю время между обновлениями пользовательского интерфейса, и пользователь воспринимает менее отзывчивое приложение.
В стороне, в конце концов, я надеюсь предоставить аналогичный интерфейс для файлов, размещенных на FTP/HTTP-серверах (через локальную сеть /fastish DSL). Каким будет лучший размер буфера памяти для этих (опять же, "наилучший вариант" между воспринимаемой реактивностью и эффективностью)?