Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

VCL скорость работы [D7]


B&W ©   (2009-09-16 19:05:00) 

Вот есть цикл вида:

for i:=0 to 70000 do
begin
Application.ProcessMessages;
//тело цикла
end;

если я ввожу внутрь цикла строку
label1.caption:='ход работы '+inttostr(i)+'/70000';
то скорость работы резко снижается... и этот лабел жутко мигает... подскажите пожалуйста, можно ли с этим что-то сделать? и как?
заранее спасибо!


Anatoly Podgoretsky   (2009-09-17 12:34:00) [1]

По уму рисовать только если длина увеличится на один пиксель или более, иначе действительно сомнительно.


sniknik   (2009-09-17 12:27:00) [2]

> А лучше на 100 000
однозначно.
чем меньше усилий на "нагрев проца" сомнительными прорисовками и принудительными этому "процессингу" (при том, что человек этих прорисовок даже не заметит) тем лучше.


Anatoly Podgoretsky   (2009-09-17 12:17:00) [3]

> sniknik  (16.09.2009 19:25:03)  [3]

А лучше на 100 000


Омлет   (2009-09-17 09:59:00) [4]

Выводив целых процентах, мерцать не будет.


KilkennyCat   (2009-09-17 04:37:00) [5]

конечно нет, вне цикла. это удобно и выглядит очень быстро: сначала 0%, а потом сразу 100%.


Германн   (2009-09-17 01:27:00) [6]


> нaрод использует Gauge или ProgressBar и не парит мозг
>

Хм. "Народ" использует их внутри цикла как в сабже?


TUser   (2009-09-16 22:57:00) [7]

Это раотает вот как. Когда ты присваиваешь значение капшану, соотвествующему окну (твоей формы) посылается сообщение на перерисовку. Это очень медленная операция, по сравнению с другими. Поэтомуесть смысл присваивать такое значение не на каждой итерации цикла, а весьма редко, например, на каждой тысячной: if (i mod 1000) = 0 then ...


Игорь Шевченко   (2009-09-16 21:20:00) [8]

нaрод использует Gauge или ProgressBar и не парит мозг


B&W   (2009-09-16 19:34:00) [9]

Спасибо! буду пробовать


sniknik   (2009-09-16 19:25:00) [10]

> if i mod 100 =0 then
мало, хотя бы на 10000.


sniknik   (2009-09-16 19:24:00) [11]

> можно ли с этим что-то сделать?
не заниматься идиотизмом и выводить только то, что человек реально может заметить.


anonims   (2009-09-16 19:21:00) [12]

if i mod 100 =0 then
label1.caption:='ход работы '+inttostr(i)+'/70000';


Наверх

Титульная страница Поиск, карта сайта Написать письмо