Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#31: 2012-03-23 03:07:47 ЛС | профиль | цитата
Да я, вообще, приятно удивлен. Синтаксис, такой, дружелюбненький.
Может мне сразу перейти на него, и проэкт заканчивать уже в нем. Пока я еще не слишком увяз в зависимость от Delphi.

У меня планируется только голый OpenGl, и bass библиотеки.
3 платформы, очень привлекательно.

Хотя это, наверное, слишком смелый шаг, надо подумать.
Как минимум, в OpenGL.pbi я не нашел glOrtho() или gluOrtho2D()
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#32: 2012-03-23 11:56:10 ЛС | профиль | цитата
login писал(а):
Хотя это, наверное, слишком смелый шаг, надо подумать.

code_27322.txt
Время в микросекундах.
------------ Дoбавленo в 11.56:
Или, как ты любишь говорить, - IC в 52,601365187713310580204778156997 быстрее FTCG
Прошу прощения. Не то выложил. В микросекундах ниже
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_27322.txt [5KB] [218]
Разработчик
Ответов: 26156
Рейтинг: 2127
#33: 2012-03-23 12:16:55 ЛС | профиль | цитата
Tad писал(а):
Время в микросекундах

Это с какого, когда стоят миллисекунды в свойствах
Tad писал(а):
IC в 52,601365187713310580204778156997 быстрее FTCG

А у меня только в 1,5 раза

------------ Дoбавленo в 12.16:
Вот это вот


_hi_onEvent(onRes,0);

страшный тормоз перестройки, оттягивает на себя все время
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#34: 2012-03-23 12:23:26 ЛС | профиль | цитата
Не то выложил что ли ?
Повтор
code_27323.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_27323.txt [5KB] [224]
Разработчик
Ответов: 26156
Рейтинг: 2127
#35: 2012-03-23 12:39:25 ЛС | профиль | цитата
Tad, а че ты не используешь диапазон


if n in [11..16] then k := 0
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#36: 2012-03-23 13:08:36 ЛС | профиль | цитата
Я сначала так и сделал - на 1мс дольше.
Потом попробовал Case n of
Вобщем выложен самый быстрый результат где первой идет проверка на If n=17
И в 52 раза.
Так что если кто расскажет, что FTCG делает самый оптимальный код, то это "лапша на уши".
И то что login рассказывал, что его программа работает быстрее, чем программы написанные другими - тоже результат неверно поставленного тестирования.


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1304
Рейтинг: 405
#37: 2012-03-23 14:13:07 ЛС | профиль | цитата
Так что если кто расскажет, что FTCG делает самый оптимальный код, то это "лапша на уши".

Tad, а если посмотреть на схему предаставленную login?
я понимаю для login как начинающему вполне простительно, но от вас Tad я не ожидал такой невнимательности .
------------ Дoбавленo в 14.13:
Беспорно что IC в данном случае быстрее раз в 12-14 но не как не 52.
карма: 3

0
Ответов: 16884
Рейтинг: 1239
#38: 2012-03-23 14:27:12 ЛС | профиль | цитата
MAV, а я с какой сравниваю ? Что где-то пропустил ?MAV, какой code XXXXX.txt сравнивать ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 495
Рейтинг: 163
#39: 2012-03-23 14:32:55 ЛС | профиль | цитата
Tad писал(а):
И в 52 раза.

nesco писал(а):
А у меня только в 1,5 раза
Странно у меня не быстрей ...
в чем подвох..

Add(IndexToChanel,11631242,581,21)
{
Count=18
link(onEvent12,6674507:doWork2,[])
link(onEvent13,7934983:doWork2,[])
link(onEvent14,1245562:doWork2,[])
link(onEvent15,12747404:doWork2,[])
link(onEvent16,9874699:doWork2,[])
link(onEvent17,9874699:doWork3,[(641,139)])
link(onEvent18,11633699:doWork2,[(672,146)(672,111)])
}
Add(If_else,416891,630,231)
{
Type=3
Op2=Integer(16)
link(onTrue,1694203:doWork1,[])
link(onFalse,9520171:doWork1,[(677,244)])
AddHint(-1,37,27,13,Op2)
}
Add(If_else,5161824,693,280)
{
Op2=Integer(17)
link(onTrue,1694203:doWork2,[(737,286)(737,244)])
AddHint(-2,36,27,13,Op2)
}
Add(HubEx,9520171,673,280)
{
link(onEvent,5161824:doCompare,[])
}
Add(If_else,9788377,581,231)
{
Type=4
Op2=Integer(11)
link(onTrue,416891:doCompare,[])
link(onFalse,9520171:doWork2,[(621,244)(621,286)])
AddHint(-2,38,27,13,Op2)
}
Add(ChanelToIndex,1694203,749,231)
{
link(onIndex,10400535:doValue,[])
}
Add(ChanelToIndex,11633699,693,98)
{
link(onIndex,11403340:doValue,[])
}
Add(HubEx,6674507,637,98)
{
link(onEvent,11633699:doWork1,[])
}
Add(HubEx,7934983,637,105)
{
Angle=3
link(onEvent,6674507:doWork3,[])
}
Add(HubEx,1245562,637,112)
{
Angle=3
link(onEvent,7934983:doWork3,[])
}
Add(HubEx,12747404,637,119)
{
Angle=3
link(onEvent,1245562:doWork3,[])
}
Add(HubEx,9874699,637,126)
{
Angle=3
link(onEvent,12747404:doWork3,[])
}
Add(TimeCounter,7414212,287,84)
{
Precision=1
link(onStart,13989793:doFor,[])
link(onStop,10448880:doText,[(327,97)(327,139)])
}
Add(For,13989793,336,84)
{
Start=1
End=100000
link(onEvent,9853830:doFor,[])
link(onStop,7414212:doStop,[(380,97)(380,68)(273,68)(273,97)])
}
Add(Button,6531240,119,84)
{
Left=125
Top=60
link(onClick,10379623:doEvent1,[])
}
Add(Memory,11403340,749,98)
{
Default=Integer(0)
}
Add(Memory,10400535,798,231)
{
Default=Integer(0)
}
Add(Label,10448880,336,133)
{
Left=200
Top=65
Width=100
}
Add(TimeCounter,11725473,294,231)
{
Precision=1
link(onStart,6755417:doFor,[])
link(onStop,14469705:doText,[(334,244)(334,286)])
}
Add(For,6755417,343,231)
{
Start=1
End=100000
link(onEvent,9176190:doFor,[])
link(onStop,11725473:doStop,[(387,244)(387,215)(280,215)(280,244)])
}
Add(Label,14469705,343,280)
{
Left=200
Top=85
Width=100
}
Add(Hub,10379623,196,84)
{
OutCount=4
link(onEvent1,7414212:doStart,[])
link(onEvent2,11725473:doStart,[(237,97)(237,237)])
link(onEvent3,67066:doStart,[(229,104)(229,384)])
link(onEvent4,4082358:doStart,[(220,111)(220,510)])
}
Add(For,9853830,406,84)
{
Start=1
End=18
link(onEvent,11631242:doEvent,[(506,90)(506,27)])
}
Add(For,9176190,406,231)
{
Start=1
End=18
link(onEvent,9788377:doCompare,[])
}
Add(TimeCounter,67066,294,378)
{
Precision=1
link(onStart,2569247:doCompare,[])
link(onStop,2348341:doText,[(334,391)(334,433)])
}
Add(Label,2348341,343,427)
{
Left=200
Top=105
Width=100
}
Add(InlineCode,8947214,350,504)
{
WorkPoints=#7:doStart|
EventPoints=#6:onStop|5:onRes|
Code=#15:unit HiAsmUnit;|12:// Autor Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|10: k:byte;|9: public|27: onRes, onStop:THI_Event;|50: procedure doStart(var _Data:TData; Index:Word);|47: procedure vRes(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|31: procedure THiAsmClass.doStart;|18: var i, n:integer;|6: Begin|23: for i:=1 to 100000 do|21: for n:=1 to 18 do|10: begin|24: If n=17 then k:=1;|35: If(n>=11)and(n<=16) then k:=0|9: end;|25: _hi_onEvent(onStop); |5: End;|0:|27:procedure THiAsmClass.vRes;|5:begin|22: dtInteger(_Data,k)|5:end; |4:end.|
link(onStop,4082358:doStop,[(393,510)(393,492)(275,492)(275,517)])
}
Add(Label,5463166,350,553)
{
Left=200
Top=125
Width=100
}
Add(TimeCounter,4082358,287,504)
{
Precision=1
link(onStart,8947214:doStart,[])
link(onStop,5463166:doText,[(335,517)(335,559)])
}
Add(FTCG_Tools,2569247,350,378)
{
link(onStop,67066:doStop,[(398,384)(398,362)(282,362)(282,391)])
}
BEGIN_SDK
Add(EditMultiEx,9963575,21,21)
{
WorkCount=#9:doCompare|
EventCount=#6:onStop|
Width=545
Height=347
link(doCompare,6564903:doFor,[(42,27)(42,97)])
}
Add(FT_If_else,12601791,224,133)
{
Type=4
Op2=Integer(11)
link(onTrue,14208137:doCompare,[])
link(onFalse,15127802:doWork2,[(268,146)(268,188)])
}
Add(FT_If_else,14208137,280,133)
{
Type=3
Op2=Integer(16)
link(onTrue,14070654:doData,[])
link(onFalse,15127802:doWork1,[(326,146)])
}
Add(FT_If_else,8262193,343,182)
{
Op2=Integer(17)
link(onTrue,2535156:doData,[])
}
Add(HubEx,15127802,322,182)
{
link(onEvent,8262193:doCompare,[])
}
Add(FT_DoData,14070654,413,133)
{
Data=Integer(0)
link(onEventData,15232975:doWork1,[(461,139)])
}
Add(FT_DoData,2535156,413,182)
{
Data=Integer(1)
link(onEventData,15232975:doWork3,[(461,188)])
}
Add(FT_For,6564903,63,91)
{
End=100000
Start=1
link(onEvent,2541856:doFor,[(117,97)(117,139)])
link(onStop,9963575:onStop,[(331,104)(331,27)])
}
Add(FT_For,2541856,168,133)
{
End=18
Start=1
link(onEvent,12601791:doCompare,[])
}
Add(FT_Memory,11718991,476,161)
{
Default=Integer(0)
}
Add(HubEx,15232975,457,161)
{
link(onEvent,11718991:doValue,[])
}
END_SDK


карма: 4

1
файлы: 1code_27325.txt [5.4KB] [296]
Голосовали:MAV
Ответов: 1304
Рейтинг: 405
#40: 2012-03-23 14:36:30 ЛС | профиль | цитата
code_27327.txt
login при составлении схемы на FTCG допустил ошибку: вынес циклы за пределы контейнера FTCG, тем самым потеряв в скорости.

карма: 3

0
файлы: 1code_27327.txt [5.4KB] [200]
Разработчик
Ответов: 26156
Рейтинг: 2127
#41: 2012-03-23 14:37:15 ЛС | профиль | цитата
nesco писал(а):
что FTCG делает самый оптимальный код

А кто сказал, что он самый оптимальный

Вот такая схема



Add(FTCG_Tools,1744119,686,476)
{
}
BEGIN_SDK
Add(EditMultiEx,1754439,21,21)
{
WorkCount=#9:doCompare|
EventCount=#11:onEventData|
VarCount=#5:Value|
Width=475
Height=347
link(doCompare,10995659:doCompare,[(67,27)(67,132)])
link(Value,6936366:Value,[(27,263)(391,263)])
}
Add(FT_If_else,7947835,182,133)
{
Type=4
Op2=Integer(11)
link(onTrue,336565:doCompare,[])
}
Add(FT_If_else,336565,238,133)
{
Type=3
Op2=Integer(16)
link(onTrue,16236819:doData,[])
}
Add(FT_If_else,10995659,112,126)
{
Op2=Integer(17)
link(onTrue,16006813:doData,[(170,132)(170,90)])
link(onFalse,7947835:doCompare,[])
}
Add(FT_DoData,16236819,301,133)
{
Data=Integer(0)
link(onEventData,13868993:doWork2,[])
}
Add(FT_DoData,16006813,301,84)
{
Data=Integer(1)
link(onEventData,13868993:doWork1,[(355,90)])
}
Add(HubEx,13868993,351,133)
{
link(onEvent,6936366:doValue,[])
}
Add(FT_Memory,6936366,385,133)
{
}
END_SDK


Дает вот такой код



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

if ToInteger(Data) = 17 then
begin
val3 := int2str(1);
end
else if((ToInteger(Data) >= 11) and (ToInteger(Data) <= 16) )then
begin
val3 := int2str(0);
end;
end;

Интерфейс накладыват свое торможение, хотя код построен правильно
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#42: 2012-03-23 14:37:52 ЛС | профиль | цитата
MAV, tig-rrr, теперь понял. Не с тем сравнивал
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26156
Рейтинг: 2127
#43: 2012-03-23 14:47:40 ЛС | профиль | цитата
Хотя login, мог бы и оптимизировать схему. В этом FTCG, иногда лишние элементы дают более оптимальный код. Вот пример его мультика с учетом оптимизации, добавлено один лишний компонента, но результат очень интересен



Add(FTCG_Tools,1744119,686,476)
{
}
BEGIN_SDK
Add(EditMultiEx,1754439,21,21)
{
WorkCount=#9:doCompare|
EventCount=#11:onEventData|
VarCount=#5:Value|
Width=475
Height=347
link(doCompare,8076218:doValue,[(59,27)(59,132)])
link(Value,6936366:Value,[(27,263)(426,263)])
}
Add(FT_If_else,7947835,217,133)
{
Type=4
Op2=Integer(11)
link(onTrue,336565:doCompare,[])
}
Add(FT_If_else,336565,273,133)
{
Type=3
Op2=Integer(16)
link(onTrue,16236819:doData,[])
}
Add(FT_If_else,10995659,147,126)
{
Op2=Integer(17)
link(onTrue,16006813:doData,[(205,132)(205,90)])
link(onFalse,7947835:doCompare,[])
}
Add(FT_DoData,16236819,336,133)
{
Data=Integer(0)
link(onEventData,13868993:doWork2,[])
}
Add(FT_DoData,16006813,336,84)
{
Data=Integer(1)
link(onEventData,13868993:doWork1,[(390,90)])
}
Add(HubEx,13868993,386,133)
{
link(onEvent,6936366:doValue,[])
}
Add(FT_Memory,6936366,420,133)
{
Default=Integer(0)
}
Add(FT_Memory,8076218,98,126)
{
Default=Integer(0)
link(onData,10995659:doCompare,[])
}
END_SDK


И дает он вот такой код



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

val1 := ToInteger(Data);
if val1 = 17 then
begin
val4 := 1;
end
else if((val1 >= 11) and (val1 <= 16) )then
begin
val4 := 0;
end;
end;

И работает в 2,5 раза быстрее
карма: 22

0
Ответов: 1304
Рейтинг: 405
#44: 2012-03-23 14:48:42 ЛС | профиль | цитата
tig-rrr, у тебя в контейнере FT_Memory :integer, я тоже забыл что надо указывать тип переменной. Итог быстродействие IC равно FTCG.
карма: 3

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#45: 2012-03-23 14:51:52 ЛС | профиль | цитата
Получается так, что для более быстрой работы входные и выходные типы в FTCG надо сразу приводить к тому типу, с которым дальше работаешь, иначе тормоза неизбежны за счет многократного преобразования типов
карма: 22

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