OpenSCADAWiki: Works/Tests/ Java Like ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Works/Tests/JavaLike from 2016-12-07 14:56:31..

Òåñòû ìîäóëÿ âû÷èñëåíèé íà îñíîâå Java ïîäîáíîãî ÿçûêà


Ïðîèçâîäèòåëüíîñòü âèðòóàëüíîé ìàøèíû


28.01.2006:
Îñíîâàíèå: Ïåðâè÷íàÿ îöåíêà ïðîèçâîäèòåëüíîñòè âèðòóàëüíîé ìàøèíû ñèñòåìû OpenSCADA íà îñíîâå âûðàæåíèÿ "y=x1+x2", ãäå âñå ïåðåìåííûå ãëîáàëüíûå âåùåñòâåííîãî òèïà.

Ñòàäèÿ Äåéñòâèå K7_1G-0, ìêñ
1 Èíèöèàëèçàöèÿ ñïèñêà ðåãèñòðîâ 2.3
2 Âõîä â ôóíêöèþ exec() 3
3 Îáõîä êîìàíä 4.4
4 ×òåíèå 9
5 Ïîëíîå âðåìÿ 10.2

17.07.2013:
Îñíîâàíèå: Îáîñíîâàíèå òåêóùåé ïðîèçâîäèòåëüíîñòè, îöåíêà è îïòèìèçàöèÿ. Èçìåðåíèÿ ïðîâîäèëèñü âûáîðêîé ìèíèìàëüíîãî âðåìåíè èç ïÿòè âûçîâîâ ïî 1000 èñïîëíåíèé ôîðìóëû "a -= b*(a-c)" è å¸ ñîêðàùåíèé â êàæäîì âûçîâå. Âñå ïåðåìåííûå ãëîáàëüíûå âåùåñòâåííîãî òèïà.

Formula Time on AMDGeode-500 (the operation time), ìêñ Notes
a -= b*(a-c) 4.52 (0.74)
a -= b*c 3.78 (0.72)
a -= b 3.06 (0.56)
=> full call: 3.06 (0.49): getValR() = 0.49/2 = 0.245
=> only write const = 2.57 (0.17)
=> pass.code = 2.4
a = b 2.5 (1.21)
!> use unified TVariant function setVal() and getVal() = 7.6 (2.7 write only) => fix to 5.0 by prevent default set to string EVAL.
=> full call: 2.5 (0.33)
=> only write const: 2.17 (0.47)
=> only check for type: 1.7 (0.3)
=> pass code: 1.4 (0.11)
Write to function IO is longer then read from local register by other context call and additional checking for NAN and real modification.
Empty 1.29 Infrastructure and measurement method utilization time.

24.04.2016:
Reason: Estimate performance of access to low level IO lines on Raspberry Pi GPIO in different ways of JavaLikeCalc language of OpenSCADA.
Conditions: Raspberry Pi 3, GPIO40, DAQ.BCM2835 (based on library bcm2835)

Operation Results, us
Sleep. Lag on sleep in 1ms measured, which mostly limited by the realtime reaction about 100us.
SYS.sleep(); +110
Special.FLibSYS.fnc_tmSleep(); +70
Sleep. Lag on sleep in 100us measured, which performs in the measuring cycle.
SYS.sleep(); +17
Special.FLibSYS.fnc_tmSleep(); +2
Get GPIO pin's level
From an attribute res = BCM2835.pi2.pi2.gpio17; 5.4
By the static accessing function res = DAQ.BCM2835.pi2.pi2.fnc_get(17); 1.6
By the static accessing function with prepare the link function get = "DAQ.BCM2835.pi2.pi2.fnc_get"; for(i = 0; i < 10000; i++) res = get(17); 1.7
By the dynamic accessing function res = SYS.DAQ.BCM2835.pi2.pi2.fnc_get.call(17); 80
By the dynamic accessing function with prepare the end object tO = SYS.DAQ.BCM2835.pi2.pi2.fnc_get; for(i = 0; i < 1000; i++) res = tO.call(17); 14.3
Put GPIO pin's level
To an attribute BCM2835.pi2.pi2.gpio18 = true; 2.1
By the static accessing function DAQ.BCM2835.pi2.pi2.fnc_put(18, true); 1.4
By the static accessing function with prepare the link function put = "DAQ.BCM2835.pi2.pi2.fnc_put"; for(i = 0; i < 10000; i++) put(17, false); 1.5
By the dynamic accessing function SYS.DAQ.BCM2835.pi2.pi2.fnc_put.call(18, true); 79
By the dynamic accessing function with prepare the end object tO = SYS.DAQ.BCM2835.pi2.pi2.fnc_put; for(i = 0; i < 1000; i++) tO.call(18, true); 14.3


 
There are no files on this page.[Display files/form]
There is no comment on this page. [Display comments/form]