Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#46: 2012-03-23 14:54:01 ЛС | профиль | цитата
FTCG
procedure TClassFTCG_Tools_33EB1B0.event_doCompare(var Data:TData; index:word);
var
i1:integer;
i2:integer;
begin

for i1 := 1 to 100000 do
begin
for i2 := 1 to 18 do
begin
if((i2 >= 11) and (i2 <= 16) )then
begin
val6 := int2str(0);
end
else
begin
if i2 = 17 then
begin
val6 := int2str(1);
end;
end;
end;
end;
_hi_onEvent(THIFTCG_Tools(FParent).Events[0]);
end;
IC
 procedure THiAsmClass.doStart;
var i, n:integer;
Begin
for i:=1 to 100000 do
begin
for n:=1 to 18 do
begin
If n=17 then k:=1;
If(n>=11)and(n<=16) then k:=0;
end;
end;
_hi_onEvent(onStop);
End;
Всё бы было ничего если бы FTCG не мудрил с val6 := int2str(1);
Вот это int2str его и притормаживает.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#47: 2012-03-23 15:00:41 ЛС | профиль | цитата
MAV писал(а):
Итог быстродействие IC равно FTCG.

Только, если и входной тип привести к рабочему типу
------------ Дoбавленo в 14.55:
Tad писал(а):
Всё бы было ничего если бы FTCG не мудрил с val6 := int2str(1);

Я показал, как это убрать
------------ Дoбавленo в 15.00:
Tad, вот FTCG, который работает со скоростью IC



Add(FTCG_Tools,1744119,511,476)
{
}
BEGIN_SDK
Add(EditMultiEx,1754439,21,21)
{
WorkCount=#9:doCompare|
EventCount=#11:onEventData|
VarCount=#5:Value|
Width=622
Height=375
link(doCompare,1251345:doFor,[(63,27)(63,139)])
link(Value,6936366:Value,[(27,263)(503,263)])
}
Add(FT_If_else,7947835,294,140)
{
Type=4
Op2=Integer(11)
link(onTrue,336565:doCompare,[])
}
Add(FT_If_else,336565,350,140)
{
Type=3
Op2=Integer(16)
link(onTrue,16236819:doData,[])
}
Add(FT_If_else,10995659,224,133)
{
Op2=Integer(17)
link(onTrue,16006813:doData,[(282,139)(282,97)])
link(onFalse,7947835:doCompare,[])
}
Add(FT_DoData,16236819,413,140)
{
Data=Integer(0)
link(onEventData,13868993:doWork2,[])
}
Add(FT_DoData,16006813,413,91)
{
Data=Integer(1)
link(onEventData,13868993:doWork1,[(467,97)])
}
Add(HubEx,13868993,463,140)
{
link(onEvent,6936366:doValue,[])
}
Add(FT_Memory,6936366,497,140)
{
Default=Integer(0)
}
Add(FT_For,1251345,105,133)
{
End=100000
Start=1
link(onEvent,3272968:doFor,[])
link(onStop,1754439:onEventData,[(154,146)(154,27)])
}
Add(FT_For,3272968,168,133)
{
End=18
Start=1
link(onEvent,10995659:doCompare,[])
}
END_SDK


И вот его код



procedure TClassFTCG_Tools_1A893F0.event_doCompare(var Data:TData; index:word);
var
i1:integer;
i2:integer;
begin

for i1 := 1 to 100000 do
begin
for i2 := 1 to 18 do
begin
if i2 = 17 then
begin
val5 := 1;
end
else if((i2 >= 11) and (i2 <= 16) )then
begin
val5 := 0;
end;
end;
end;
_hi_onEvent(THIFTCG_Tools(FParent).Events[0]);
end;

Вывод: login-y срочно работать над оптимизацией своего кода

PS Заключение -- FTCG может делать хороший код, но надо знать, как это делать
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#48: 2012-03-23 15:03:32 ЛС | профиль | цитата
Вот значит не зря потратили время на тему.
nesco писал(а):
Получается так, что для более быстрой работы входные и выходные типы в FTCG надо сразу приводить к тому типу, с которым дальше работаешь, иначе тормоза неизбежны за счет многократного преобразования типов

и
nesco писал(а):
Заключение -- FTCG может делать хороший код, но надо знать, как это делать

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#49: 2012-03-23 15:05:38 ЛС | профиль | цитата
Tad, выходит так, что login не до конца изучил FTCG и основы работы с ним. А вычисляется же ведь это за несколько минут
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#50: 2012-03-23 15:08:51 ЛС | профиль | цитата
nesco писал(а):
А вычисляется же ведь это за несколько минут
А за 4-е страницы форума не хочешь ?
Человек уже кричал: Перехожу на С++ !
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#51: 2012-03-23 15:12:27 ЛС | профиль | цитата
Tad писал(а):
А за 4-е страницы форума не хочешь

Ну, я на это потратил несколько минут.
карма: 22

0
Ответов: 495
Рейтинг: 163
#52: 2012-03-23 15:22:36 ЛС | профиль | цитата
Возникло не понимание..
В этой схеме какие у вас выдают результаты?
code_27330.txt У меня в среднем:
900-1000
7000-10000
7000-14000

карма: 4

0
файлы: 1code_27330.txt [4.6KB] [284]
Разработчик
Ответов: 26170
Рейтинг: 2127
#53: 2012-03-23 15:35:38 ЛС | профиль | цитата
У тебя первй мультик FTCG неправильный, вот его код



procedure TClassFTCG_Tools_1A8B7B0.event_doCompare(var Data:TData; index:word);
var
i1:integer;
i2:integer;
begin

for i1 := 1 to 100000 do
begin
for i2 := 1 to 18 do
begin
if((0 >= 11) and (0 <= 16) )then
begin
val6 := 0;
end
else
begin
if 0 = 17 then
begin
val6 := 1;
end;
end;
end;
end;
_hi_onEvent(THIFTCG_Tools(FParent).Events[0]);
end;

Потому он и показывает большую скорость
карма: 22

0
Ответов: 495
Рейтинг: 163
#54: 2012-03-23 15:37:19 ЛС | профиль | цитата
nesco писал(а):
У тебя первй мультик FTCG неправильный,

А что в нем не правильно ? Ткните носом...
карма: 4

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#55: 2012-03-23 15:42:47 ЛС | профиль | цитата
tig-rrr писал(а):
А что в нем не правильно ? Ткните носом...

В If_Else прописано первое число 0, а должно быть Null, чтобы данные со входа брать
карма: 22

0
Ответов: 495
Рейтинг: 163
#56: 2012-03-23 15:54:50 ЛС | профиль | цитата
nesco писал(а):
В If_Else прописано первое число 0, а должно быть Null, чтобы данные со входа брать

Спасибо!.теперь понял...
карма: 4

0
Ответов: 1376
Рейтинг: 197
#57: 2012-03-23 16:57:44 ЛС | профиль | цитата
и суперскоростной (верхний) мультик перестает работать до того, как его запустили
code_27332.txt

карма: 1

0
файлы: 1code_27332.txt [4.5KB] [205]
Разработчик
Ответов: 26170
Рейтинг: 2127
#58: 2012-03-23 17:03:05 ЛС | профиль | цитата
foksov, ты че, прикалываешься У тебя в первом for начало и конец перепутаны местами -- End=1, Start=100000
карма: 22

0
Ответов: 1376
Рейтинг: 197
#59: 2012-03-23 17:05:34 ЛС | профиль | цитата
nesco, выходит так, что "прикалываюсь", тк ни где не написано, что так делать нельзя, или я ненашел... но событие конца цикла срабатывает исправно
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#60: 2012-03-23 17:16:16 ЛС | профиль | цитата
foksov писал(а):
но событие конца цикла срабатывает исправно

Ты бы в код глянул



procedure TClassFTCG_Tools_1A891E0.event_doCompare(var Data:TData; index:word);
var
i1:integer;
i2:integer;
begin

for i1 := 100000 to 1 do
begin
for i2 := 1 to 18 do
begin
if((i2 >= 11) and (i2 <= 16) )then
begin
val6 := 0;
end
else
begin
if i2 = 17 then
begin
val6 := 1;
end;
end;
end;
end;
_hi_onEvent(THIFTCG_Tools(FParent).Events[0]);
end;

Код конца цикла стоит за пределами самого цикла, так что сработает всегда
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)