[gelöst] Device ein- bzw. ausschalten, aber nur, wenn nicht schon aus- bzw. ein

Begonnen von czcbe, 16 Juli 2018, 11:52:58

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Zitatman über den FILTER im Hintergrund einen ziemlichen Overhead erzeugt
Das sollte nicht ueberbewertet werden: FILTER geht ueber die vorher spezifizierte Liste (in diesem Fall mit einem Element), und behaelt nur die Elemente, die dem Filter entsprechen. Das ist mAn in diesem Fall "billiger" als nach Perl zu wechseln. Ich muss aber zugeben, dass ich das nicht nachgemessen habe.

Prof. Dr. Peter Henning

Hmmm. Scheint mir nicht ganz glaubhaft. Wäre da eher für eine Messung.

LG

pah

rudolfkoenig

ZitatHmmm. Scheint mir nicht ganz glaubhaft. Wäre da eher für eine Messung.
Immer diese Theoretiker :) Na dann:

Vorbereitung/fhem.cfg:attr global modpath .
attr global mseclog 1

define t telnet 7072
define d dummy
define c_onIfOff cmdalias onIfOff .* AS { fhem("set $EVTPART0 $EVTPART1") if(Value("$EVTPART0") ne $EVTPART1)}



Messen/Ergebnisse:  18ms { Log 1, "Start";; map { fhem ""                          } (0..9999);; Log 1, "End" } # leere Schleife/perl overhead
2043ms { Log 1, "Start";; map { fhem "set d on"                  } (0..9999);; Log 1, "End" } # Schleife mit set von dummy, ohne Bedingung
655ms { Log 1, "Start";; map { fhem "set d:FILTER=STATE!=on on" } (0..9999);; Log 1, "End" } # Schleife mit FILTER
1098ms { Log 1, "Start";; map { fhem "onIfOff d on"              } (0..9999);; Log 1, "End" } # Schleife mit cmdAlias

betateilchen

Also ein set mit Filter wäre demnach dreimal so schnell wie eines ohne?

da hilft nichtmal popcorn...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Zitatda hilft nichtmal popcorn...
Aber vielleicht ausschlafen :)
Der set mit FILTER loest gar kein set aus, was Readings-setzen, auf userReadings pruefen, nach evtl. zu benachrichtigende Instanzen zu suchen erspart.

Prof. Dr. Peter Henning


rudolfkoenig

Die Aufgabe war die letzten zwei Varianten mit einander zu vergleichen.
Tut mir leid, dass das Einfuegen der "ohne Filter" Version so viele hier verwirrt.

Prof. Dr. Peter Henning


czcbe

Wie ist nun das Fazit von den grossen Koryphäen? :-)

In der vielzitierten commandref findet man jedenfalls die Filter-Variante, von wo ich sie auch genommen habe.

FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell

rudolfkoenig

FILTER ist etwas schneller als cmdalias, allerdings sind die Unterschiede nur messbar, aber nicht merkbar.

betateilchen

mich würde einfach mal noch die Messung interessieren, wenn 10.000 Mal mit Filter tatsächlich ein "set on" ausgeführt würde...

fhem "set d:FILTER=STATE!=mirEgal on"
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Zitatmich würde einfach mal noch die Messung interessieren, wenn 10.000 Mal mit Filter tatsächlich ein "set on" ausgeführt würde...
Der erste Test lieferte 1800ms zurueck. Da mir das komisch vorkam, habe ich "set d on" wiederholt, und jetzt habe ich 1300ms bekommen, offensichtlich hatte ich vorhin einen Ausreisser. Ich habe die folgenden Werte aus 3 Durchlaeufen gemittelt, die Abweichungen lagen bei +/- 10ms.


1290ms { Log 1, "Start";; map { fhem "set d on" } (0..9999);; Log 1, "End" }
1789ms { Log 1, "Start";; map { fhem "set d:FILTER=STATE!=mirEgal on" } (0..9999);; Log 1, "End" }
627ms { Log 1, "Start";; map { fhem "set d:FILTER=STATE!=on on" } (0..9999);; Log 1, "End" }


Aendert aber nichts an der eigentlichen Aussage: FILTER ist in so einem Fall nicht teuer, und ist eigentlich egal, ob man cmdalias oder FILTER verwendet, die zusaetzliche CPU Belastung ist fuer FHEM-typische Szenarien vernachlaessigbar.

betateilchen

Danke fürs Testen.

Zitat von: rudolfkoenig am 19 Juli 2018, 18:43:32
die zusaetzliche CPU Belastung ist fuer FHEM-typische Szenarien vernachlaessigbar.

Mag schon stimmen. Aber ich stamme aus einer Zeit, als man Taschenrechner (HP41) noch synthetisch programmierte, um einzelne Bits und Rechenzeit einzusparen...  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Wuppi68

Zitat von: betateilchen am 19 Juli 2018, 18:48:31
Danke fürs Testen.

Mag schon stimmen. Aber ich stamme aus einer Zeit, als man Taschenrechner (HP41) noch synthetisch programmierte, um einzelne Bits und Rechenzeit einzusparen...  8)

da ging ja auch darum Speicherplatz um jeden Preis zu sparen ;-)

Wie hast Du nachher es geschafft UPN Knoten im Kopf zu lösen?

*duckundweck*
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen