Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
1-1120330054
n0p
2005-07-02 22:47
2005.07.18
Маленький баг...


10-1096828319
Wolverrum
2004-10-03 22:31
2005.07.18
COM и консольный режим


14-1119614514
Ega23
2005-06-24 16:01
2005.07.18
С днем рождения! 24 июня


1-1120384016
aapp
2005-07-03 13:46
2005.07.18
Использование *.h


1-1120035085
alex-kosmonavt
2005-06-29 12:51
2005.07.18
randomize





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский