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

Вниз

Многоразовое использование памяти   Найти похожие ветки 

 
learner ©   (2006-09-27 10:44) [0]

Здравствуйте !
Какой из двух вариантов предпочтительнее использовать
в плане "чтобы системе проще жилось" и быстродействия ?
Вариант 1:
function GetResult(var pData: Pointer; var cbData: DWord): DWord;
var
NeedMemSize: DWord;
begin
NeedMemSize:=0;
Result:=WorkWithMem(pData, cbData, NeedMemSize);
if Result = Мало_памяти then
 begin
  ReallocMem(pData, NeedMemSize);
  cbData:=NeedMemSize;
  Result:=WorkWithMem(pData, cbData, MemSize);
 end;
end;

procedure Test(aCount: integer);
var
i: integer;
pData: Pointer;
cbData: DWord
begin
cbData:=0;
pData:=nil;
try
 for i:=0 to aCount - 1 do GetResult(pData, cbData);
finally
 ReallocMem(pData, 0);
end;
end;

Вариант 2:
function GetResultFix: DWord;
var
NeedMemSize: DWord;
pData: array[0..MAX_POSSIBLE_SIZE_FOR_CURRENT_WORK - 1] of Byte;
begin
Result:=WorkWithMem(@pData[0], MAX_POSSIBLE_SIZE_FOR_CURRENT_WORK, NeedMemSize);
end;

procedure TestFix(aCount: integer);
var
i: integer;
begin
for i:=0 to aCount - 1 do GetResultFix;
end;


 
clickmaker ©   (2006-09-27 11:02) [1]

нет тут однозначного ответа.
Зависит от приоритета твоей задачи в системе, самого MAX_POSSIBLE_SIZE_FOR_CURRENT_WORK, размера оперативки, своп-файла...
Если проге часто требуются блоки примерно одинакового размера, то конечно лучше выделить один раз по максимуму.
Если разного и не очень часто, то лучше по запросу.


 
Игорь Шевченко ©   (2006-09-27 11:05) [2]


> Какой из двух вариантов предпочтительнее использовать
> в плане "чтобы системе проще жилось" и быстродействия ?


первый. он проще и понятнее.


 
learner ©   (2006-09-27 13:03) [3]

Спасибо



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
2-1159275606
Alex_C
2006-09-26 17:00
2006.10.15
Как избавится от мелькания Memo при перерисовке?


3-1155066396
lexander
2006-08-08 23:46
2006.10.15
Почему не работает такой запрос?


2-1158425473
KidMan
2006-09-16 20:51
2006.10.15
выполнение запроса в MySQL


15-1159027855
alpha5
2006-09-23 20:10
2006.10.15
Не ставится компонент


3-1155197685
rsa_
2006-08-10 12:14
2006.10.15
TntUnicodeControls... не получается то, что необходимо