Die Details der Rule zu erklären würde hier zu weit führen, es soll ja um die Minimierung der Zeiten gehen die Openhab auf einem Pi3b+ benötigt um eine Rule zu analysieren (zumindest nehme ich an das das in der Zeit ab dem Speichern bis zum Logeintrag "Refreshing model" passiert) und der Zeit die ab dann vergeht bis eine in diesem file enthaltene Rule über den "System started" trigger einen Logeintrag schreibt.
Verwendet man
Code: Alles auswählen
var Number c = ((232 - (Math::tan((Elevation1.state as DecimalType).doubleValue * 0.0174532925) as Number * (maxSonnentiefeSud.state as Number)/b))) - ( ( 50/Math::tan(90-((Elevation1.state as DecimalType).doubleValue * 0.0174532925)) as Number ) - 50 )
Zerlegt man das ganze hingegen in mehrere Variablen und spart ein paar unnötige Klammern ein
Code: Alles auswählen
var Number d = (maxSonnentiefeSud.state as Number)/ b
var Number e = Math::tan((Elevation1.state as DecimalType).doubleValue * 0.0174532925) as Number * d
var Number f = Math::tan(90-((Elevation1.state as DecimalType).doubleValue * 0.0174532925)) as Number
var Number g = 50 / f
var Number c = 232 - e - g -50
Ich habe mehrere derartige Beispiele, an einer anderen Stelle bei komplexeren Berechnungen war der Unterscheid von 20 Minuten auf etwa 30 sekunden zum "System Started" Eintrag ebenfalls einfach durch Zerlegung der Berechnung auf mehrere Variablen.
Kann mir jemand erklären warum das so ist (Klammern, Maximale Länge von Formeln,...)?
PS: Ich weiß dass man das codebeispiel noch weiter optimieren kann das bringt aber zumindest bei mir keine wesentliche beschleunigung mehr und macht es schlechter lesbar.