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

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

Вопрос о таймерах !


Страницы:   1 2 3

Offceman ©   (2006-02-07 12:54:00) 

Как оно будет быстрее работать?

2-е обработки в 1-ом Таймере, при Timer1.interval:= 500;

или

1-а обработка в 1-ом таймере, при Timer1.interval:= 500;
+
1-а обработка в 1-ом таймере, при Timer1.interval:= 500;

т.е. есть ли смысл  разделять различные обработки(расчёты) в отдельные таймеры или можно всё в одном крутить. Около 500 строк занимают ДВЕ обработки в одном таймере. при расчётах используются  простые арифметические действия, и    if ..then..begin..end


Officeman   (2006-02-07 13:26:00) [41]

программа используется на разных  тачках.
вот именно на тачках, класса  Pentium I . возникают проблемы.
обишка к памяти и прочае.


Ega23   (2006-02-07 13:23:00) [42]


> если нужно ЧЕТКО каждые полсекунды, то это не выход


Это да.
Но, с другой стороны, а кто тебе даст ЧЁТКУЮ гарантию о срабатывании РОВНО каждые полсекунды? TTimer?  :о)


Desdechado   (2006-02-07 13:21:00) [43]

Ega23 ©   (07.02.06 13:10) [4]
если нужно ЧЕТКО каждые полсекунды, то это не выход

ZeroDivide ©   (07.02.06 13:11) [5]
у меня было 12мс

PS качество работы зависит от загруженности системы


Officeman   (2006-02-07 13:21:00) [44]

примерно 1/20 чать кода - таймера.
я его ещё буду передылывать. пока незнаю как. но надо.


//form2.Caption:=inttostr(Templ);
label58.Caption:='';
calc_ii.Caption:='0';
calc2_ii.Caption:='0';
//âåùåé íà ñóììó
x0:=0;x1:=0;x2:=0;x3:=0;x4:=0;x5:=0;
x6:=0;x7:=0;x8:=0;x9:=0;x10:=0;x11:=0;
y0:=0;y1:=0;y2:=0;y3:=0;y4:=0;y5:=0;
y6:=0;y7:=0;y8:=0;y9:=0;y10:=0;y11:=0;

x0:=strtofloatDef(LVu.Items.Item[0].SubItems[5],0);
x1:=strtofloatDef(LVu.Items.Item[1].SubItems[5],0);
x2:=strtofloatDef(LVu.Items.Item[2].SubItems[5],0);
x3:=strtofloat(LVu.Items.Item[3].SubItems[5]);
x4:=strtofloat(LVu.Items.Item[4].SubItems[5]);
x5:=strtofloat(LVu.Items.Item[5].SubItems[5]);
x6:=strtofloat(LVu.Items.Item[6].SubItems[5]);
x7:=strtofloat(LVu.Items.Item[7].SubItems[5]);
x8:=strtofloat(LVu.Items.Item[8].SubItems[5]);
x9:=strtofloat(LVu.Items.Item[9].SubItems[5]);
x10:=strtofloat(LVu.Items.Item[10].SubItems[5]);
x11:=strtofloat(LVu.Items.Item[11].SubItems[5]);
label58.Caption:=floattostr(x1+x2+x3+x4+x0+x5+x6+x7+x8+x9+x10+x11)+' ñîò.';

y0:=strtofloatDef(LVu2.Items.Item[0].SubItems[5],0);
y1:=strtofloatDef(LVu2.Items.Item[1].SubItems[5],0);
y2:=strtofloatDef(LVu2.Items.Item[2].SubItems[5],0);
y3:=strtofloat(LVu2.Items.Item[3].SubItems[5]);
y4:=strtofloat(LVu2.Items.Item[4].SubItems[5]);
y5:=strtofloat(LVu2.Items.Item[5].SubItems[5]);
y6:=strtofloat(LVu2.Items.Item[6].SubItems[5]);
y7:=strtofloat(LVu2.Items.Item[7].SubItems[5]);
y8:=strtofloat(LVu2.Items.Item[8].SubItems[5]);
y9:=strtofloat(LVu2.Items.Item[9].SubItems[5]);
y10:=strtofloat(LVu2.Items.Item[10].SubItems[5]);
y11:=strtofloat(LVu2.Items.Item[11].SubItems[5]);
label56.Caption:=floattostr(y1+y2+y3+y4+y0+y5+y6+y7+y8+y9+y10+y11)+' ñîò.';

//------------------------------------------ USER 1 ----------------------

calc_sila.Caption:=inttostr(strtoint(u_sila.text)+strtoint(LVu.items.Item[0].SubItems[6])+strtoint(LVu.items.Item[1].Sub Items[6])+strtoint(LVu.items.Item[2].SubItems[6])+strtoint(LVu.items.Item[4].SubItems[6])+strtoint(LVu.items.Item[5].Sub Items[6])+strtoint(LVu.items.Item[6].SubItems[6])+strtoint(LVu.items.Item[7].SubItems[6])+strtoint(LVu.items.Item[8].Sub Items[6])+strtoint(LVu.items.Item[9].SubItems[6])+strtoint(LVu.items.Item[10].SubItems[6])+strtoint(LVu.items.Item[3].Su bItems[6])+strtoint(LVu.items.Item[11].SubItems[6])+
strtoint(LVu.items.Item[0].SubItems[31])+strtoint(LVu.items.Item[1].SubItems[31])+strtoint(LVu.items.Item[2].SubItems[31 ])+strtoint(LVu.items.Item[4].SubItems[31])+strtoint(LVu.items.Item[5].SubItems[31])+strtoint(LVu.items.Item[6].SubItems [31])+strtoint(LVu.items.Item[7].SubItems[31])+strtoint(LVu.items.Item[8].SubItems[31])+strtoint(LVu.items.Item[9].SubIt ems[31])+strtoint(LVu.items.Item[10].SubItems[31])+strtoint(LVu.items.Item[3].SubItems[31])+strtoint(LVu.items.Item[11]. SubItems[31]));     //ñòàòû êàìíåé

calc_lovka.Caption:=inttostr(strtoint(u_lovka.text)+strtoint(LVu.items.Item[0].SubItems[7])+strtoint(LVu.items.Item[1].S ubItems[7])+strtoint(LVu.items.Item[2].SubItems[7])+strtoint(LVu.items.Item[4].SubItems[7])+strtoint(LVu.items.Item[5].S ubItems[7])+strtoint(LVu.items.Item[6].SubItems[7])+strtoint(LVu.items.Item[7].SubItems[7])+strtoint(LVu.items.Item[8].S ubItems[7])+strtoint(LVu.items.Item[9].SubItems[7])+strtoint(LVu.items.Item[10].SubItems[7])+strtoint(LVu.items.Item[3]. SubItems[7])+strtoint(LVu.items.Item[11].SubItems[7])+
strtoint(LVu.items.Item[0].SubItems[32])+strtoint(LVu.items.Item[1].SubItems[32])+strtoint(LVu.items.Item[2].SubItems[32 ])+strtoint(LVu.items.Item[4].SubItems[32])+strtoint(LVu.items.Item[5].SubItems[32])+strtoint(LVu.items.Item[6].SubItems [32])+strtoint(LVu.items.Item[7].SubItems[32])+strtoint(LVu.items.Item[8].SubItems[32])+strtoint(LVu.items.Item[9].SubIt ems[32])+strtoint(LVu.items.Item[10].SubItems[32])+strtoint(LVu.items.Item[3].SubItems[32])+strtoint(LVu.items.Item[11]. SubItems[32]));

....

//Ïðîâåðêà öâåòíàÿ.
if  strtoint(calc_otveta.Caption)=strtoint(calc2_otveta.Caption) then begin
calc2_otveta.Font.Color:=clBlack;
calc_otveta.Font.Color:=clBlack;
end else begin
if  strtoint(calc_otveta.Caption)>strtoint(calc2_otveta.Caption) then begin
calc2_otveta.Font.Color:=clRed;
calc_otveta.Font.Color:=clGreen;
end else begin
calc_otveta.Font.Color:=clRed;
calc2_otveta.Font.Color:=clGreen;
end end;

//Ïðîâåðêà öâåòíàÿ.
if  strtoint(calc_krita.Caption)=strtoint(calc2_krita.Caption) then begin
calc2_krita.Font.Color:=clBlack;
calc_krita.Font.Color:=clBlack;
end else begin
if  strtoint(calc_krita.Caption)>strtoint(calc2_krita.Caption) then begin
calc2_krita.Font.Color:=clRed;
calc_krita.Font.Color:=clGreen;
end else begin
calc_krita.Font.Color:=clRed;
calc2_krita.Font.Color:=clGreen;
end end;


Digitman   (2006-02-07 13:18:00) [45]


> т.е. каждую запихать в отдельный таймер


При условии что оба алгоритма должны быть выполнены с одной и той же периодичностью (0,5 сек) нет никакого резона плодить таймеры - достаточно одного.

Более того, достаточно одного таймера при условии что периодичности выполнения более чем 2-х алгоритмов кратны минимальному из периодов


Digitman   (2006-02-07 13:17:00) [46]


> т.е. каждую запихать в отдельный таймер


При условии что оба алгоритма должны быть выполнены с одной и той же периодичностью (0,5 сек) нет никакого резона плодить таймеры - достаточно одного.

Более того, достаточно одного таймера при условии что периодичности выполнения более чем 2-х алгоритмов кратны минимальному из периодов


ZeroDivide   (2006-02-07 13:11:00) [47]

Минимальное время срабатывания таймера - 55 миллисекунд.


Ega23   (2006-02-07 13:10:00) [48]


> если обе уложатся в полсекунды, иначе интересность будет


Почему?

procedure TForm1.TimeOnTimer(Sender:TObject);
begin
 Timer1.Enambed:=False;

 // Вычисления

 Timer1.Enambed:=True;
end;


Officeman   (2006-02-07 13:09:00) [49]

спасибо за совет.
примерное время выполнения этого таймера на данном этапе, составляет 0,3 секунды. кроме того обработка всего ВКЛЮЧЕНА и данные подсчитываются "на лету".  может в данном случае правильнее разбить обработки на ДВЕ.
т.е. каждую запихать в отдельный таймер.

???


Desdechado   (2006-02-07 13:08:00) [50]

если обе уложатся в полсекунды, иначе интересность будет


Digitman   (2006-02-07 13:02:00) [51]

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


Страницы:   1 2 3

Наверх

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