Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

TFileStream buffer   Найти похожие ветки 

 
bns   (2005-06-24 15:59) [0]

А отчего размер буфера в TFileStream.WriteBuffer равен 64К? Корректно будет переписать метод и сделать его больше?

Спасибо.


 
begin...end ©   (2005-06-24 16:26) [1]

А где в методе WriteBuffer фигурирует 64К?


 
ferr ©   (2005-06-24 16:38) [2]

код в студию


 
bns   (2005-06-24 16:54) [3]

function TStream.CopyFrom(Source: TStream; Count: Longint): Longint;
const
 MaxBufSize = $F000;
begin

WriteBuffer идет ниже и как раз не может записать больше этих самых $F000.


 
Eraser ©   (2005-06-24 16:58) [4]

bns   (24.06.05 16:54) [3]
MaxBufSize = $F000;


Откуда выдрал кусок? )


 
ferr ©   (2005-06-24 17:04) [5]

Экономим память, не выделять же огромными кусками.
А WriteBuffer тут причём? Это CopyFrom...


 
begin...end ©   (2005-06-24 17:05) [6]

> bns   (24.06.05 16:54) [3]

> $F000

Это не 64К.

> WriteBuffer идет ниже и как раз не может записать
> больше этих самых $F000.

В реализации самогО WriteBuffer (а именно об этом шла речь в исходном вопросе) ограничений на размер буфера нет. А вот в CopyFrom действительно копирование происходит циклически с указанным размером буфера. Чем не устраивает этот размер?


 
bns   (2005-06-24 17:39) [7]

>Чем не устраивает этот размер?
Хочу увеличить эффективность копирования.

>Это не 64К.
ОК, это меньше. Если я увеличу его, это приведет к каким-либо некорректностям в работе этого кода?

Спасибо.


 
ferr ©   (2005-06-24 18:05) [8]


> Если я увеличу его, это приведет к каким-либо
> некорректностям в работе этого кода?

Вам надо ящики из одного места перенести в другое. Вы можете таскать по одному ящику или перевести все сразу.
В одном случае больше памяти надо, а в другом больше времени. Классическая ситуация. Ограничения накладывает система.


 
bns   (2005-06-24 18:31) [9]

Красивая аллегория. Я понял ее так, что увеличение размера буфера к катастрофическим последствиям привести не должно.


 
ferr ©   (2005-06-24 18:49) [10]


> увеличение размера буфера к катастрофическим
> последствиям привести не должно.

Не должно. В данном случае увеличивать не надо.
ИМХО.


 
begin...end ©   (2005-06-24 19:03) [11]

> ferr ©   (24.06.05 18:05) [8]

> Вы можете таскать по одному ящику или перевести все
> сразу.
> В одном случае больше памяти надо, а в другом больше
> времени.

Ну... чтобы перевозить ящики, много памяти не надо... :))

> bns   (24.06.05 18:31) [9]

> Я понял ее так, что увеличение размера буфера к
> катастрофическим последствиям привести не должно.

Увеличение размера в разумных пределах (несколько единиц раз) -- вероятно, не должно. Вообще говоря, это зависит от многих факторов. Например: из какого TStream будут копироваться данные методом CopyFrom? Из TMemoryStream небольшого размера, у которого данные уже находятся в памяти, или из TFileStream, который читает данные с диска? Не уверен, но думаю, что, несмотря на кэширование при дисковом чтении, изменение размера буфера окажет большее влияние на скорость копирования в случае TFileStream. Короче говоря, вряд ли здесь могут быть однозначные общие рекомендации. Можно попробовать, сравнить производительность (в конкретных условиях) и сделать выводы, учитывая также и то, что эти конкретные условия, в которых проводился тест, впоследствии могут и измениться.



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
4-1116836158
MACTEP'oK
2005-05-23 12:15
2005.07.18
Как получить доступ к памяти выделеной под любое приложение.


1-1120042840
Shuma
2005-06-29 15:00
2005.07.18
RichEdit - единицы измерения


14-1119607278
boriskb
2005-06-24 14:01
2005.07.18
Экономим на зарплатах?


4-1117027830
Marser
2005-05-25 17:30
2005.07.18
GUI на WinAPI


14-1119343954
Eugene74
2005-06-21 12:52
2005.07.18
Задача о двух цилиндрах