type
TMyRecord = record
Rect:TRectangle;
Text:TLabel;
end;
и переменную
m:array of TMyRecord;
По нажатию на одну кнопку выполняю код
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
t1,t2:TDateTime;
L:TLabel;
R:TRectangle;
begin
t1:=Now;
SetLength(m,1000);
BeginUpdate;
for I := Low(m) to High(m) do
begin
R:=TRectangle.Create(ScrollBox1);
R.Parent:=ScrollBox1;
R.ClipChildren:=true;
L:=TLabel.Create(R);
L.Text:='Это строка №'+IntToStr(i);
L.Parent:=R;
m[i].Rect:=R;
m[i].Text:=L;
R:=nil;
L:=nil;
end;
EndUpdate;
Application.ProcessMessages;
t2:=Now;
ShowMessage('Начало в: '+DateTimeToStr(t1)+#13+
'Завершение в: '+DateTimeToStr(t2)+#13+
'Прошло:'+IntToStr(MilliSecondsBetween(t2,t1))+'мс');
end;
по нажатию на вторую кнопку - очищаю
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
for I := Low(m) to High(m) do
begin
m[i].Rect.Free;
m[i].Rect:=nil;
m[i].Text:=nil;
end;
SetLength(m,0);
end;
Вопрос:
При первом нажатии на первую кнопку процесс может занимать 400мс, при втором нажатии (после очистки) 1200мс и так по возрастающей. Почему повторное создание всегда дольше первого?
P.S. Приведенный код создан специально для примера (по аналогии с реально используемым). В реально мною используемом коде первое создание 300мс а последующие могут достигать и 3000мс (что в 10 раз дольше). Может чтото нужно сделать дополнительно после очистки?
Вопрос
NesDmitrijj
Здравствуйте!
Имею некую структуру типа record
и переменную
По нажатию на одну кнопку выполняю код
по нажатию на вторую кнопку - очищаю
Вопрос:
При первом нажатии на первую кнопку процесс может занимать 400мс, при втором нажатии (после очистки) 1200мс и так по возрастающей. Почему повторное создание всегда дольше первого?
P.S. Приведенный код создан специально для примера (по аналогии с реально используемым). В реально мною используемом коде первое создание 300мс а последующие могут достигать и 3000мс (что в 10 раз дольше). Может чтото нужно сделать дополнительно после очистки?
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения