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-03 08:46:30..

Тесты модуля вычислений на основе 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.5
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);" 15
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 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);" 15


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