TFileStream тормозит при чтении/записи малыми кусочками

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

TFileStream тормозит при чтении/записи малыми кусочками

Сообщение Cheb »

Чудовищно тормозит. Поскольку все операции напрямую передаёт Windows API.

Собсно пост, где я открываю для себя кровавые подробности: viewtopic.php?f=9&t=1137&p=83396#p83396

Добавил тупую ручную буферизацию через статический массив + MOVE - получил тридцатикратный прирост производительности. :evil:

Внимание, вопрос: может есть какие нашлёпки, типа буферизующего потока (подобно тому, как TCompressionStream и TDecompressionStream садятся поверх TFileStream) ?
Чтобы лисапеды, значицца, не изобретать?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Может использовать tmemorystream, а потом все сбрасывать на диск ?
Какова задача ?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Имеются в наличии классы TReadBufStream и TWriteBufStream (модуль bufstream, пакет fcl-base).
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

TFileStream не должен сам ничего буферизировать, т.к. это не всегда надо.
Тем более, что, как уже написали, есть буферизующие реализации.
Ответить