Вверх ↑
Ответов: 1429
Рейтинг: 50
#1: 2010-09-14 02:19:21 ЛС | профиль | цитата
Кешировать в роутере - это медленнее
У меня скорость событий в потоке - "раз в пол миллисекунды". Когда роутер удлинняю то схема замедляется существенно, событие попадает на цикл for и количество точек, умножает события "лавинообразно". А без for довольно шустро. Ну ладно, раз так, то буду кешировать в переменную
------------ Дoбавленo в 02.19:
foksov писал(а):
А в чём выгода этого "быстрого" DoData?

Стараюсь избегать "горлышек в бутылке". Написал несколько важных(для меня), быстрых элементов, и оказалось, что они работают в 4 раза быстрее Memory и DoData с которыми взаимодействуют. Вот я их тоже себе переписал

Пример "транзистора из макса" (есть еще такой обратный):
Add(MainForm,2260457,140,238)
{
Left=20
Top=105
Width=336
Height=253
Color=8421376
Caption=":("
BorderStyle=3
}
Add(Button,11229748,238,238)
{
Left=80
Top=55
Width=65
Height=30
Caption="аЁб?аАб?б?"
Data=String(с переди)
link(onClick,473379:doEvent1,[])
}
Add(TimeCounter,16367636,322,203)
{
link(onStart,7814300:doFor,[(380,209)(380,167)])
link(onStop,7587951:doText,[])
}
Add(For,7814300,406,161)
{
End=2000000
link(onEvent,12904234:doValue,[])
link(onStop,16367636:doStop,[(459,174)(459,149)(310,149)(310,216)])
}
Add(TimeCounter,5948833,336,336)
{
link(onStart,381516:doFor,[(394,342)(394,300)])
link(onStop,8951079:doText,[])
}
Add(For,381516,420,294)
{
End=2000000
link(onEvent,1669216:in1,[])
link(onStop,5948833:doStop,[(473,307)(473,282)(324,282)(324,349)])
}
Add(Label,7587951,406,210)
{
Left=160
Top=55
}
Add(Label,8951079,420,343)
{
Left=160
Top=75
}
Add(Hub,473379,294,238)
{
link(onEvent1,16367636:doStart,[(315,244)(315,209)])
link(onEvent2,5948833:doStart,[(315,251)(315,342)])
}
Add(Memory,12904234,616,161)
{
Default=String(веолвеглвнлн)
Point(Data)
}
Add(InlineCode,1669216,616,294)
{
@Hint=#19:Switcher (из макса)|
WorkPoints=#3:in1|9:doSelect1|9:doSelect2|
EventPoints=#4:out1|4:out2|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|13: i:integer;|9: public|29: out1:THI_Event; //выход 1|29: out2:THI_Event; //выход 2|3: |55: procedure in1(var Data:TData; index:word); // Вход 1|3: |64: procedure doSelect1(var DataS1:TData; index:word); // select1|64: procedure doSelect2(var DataS2:TData; index:word); // select2|3: |5: end;|0:|14:implementation|0:|36:procedure THiAsmClass.in1; // Вход 1|4: |5:begin|21: if i = 0 then|31: _hi_OnEvent(out1, Data)|8: else|32: _hi_OnEvent(out2, Data);|4:end;|4: |51: procedure THiAsmClass.doSelect1; // select1|30: begin i := 0; end;|12: |51: procedure THiAsmClass.doSelect2; // select2|30: begin i := 1; end;|0:|4:end.|
}


карма: 0

0