Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich verwede ein SubVI, das ungefähr so aufgebaut ist:
snip09
Ich reiche hier den Cluster "Messdaten" durch das SubVI, damit die Verdrahtung im übergeordneten Blockdiagramm ordentlich ist.
Ich vermute, bei meinem SubVI wird eine Kopie des Clusters erstellt (s. kommentierte Stelle).
Lässt sich das irgendwie vermeiden trotz "Durchreichen" des Clusters?
Oder seht ihr sonst Dinge, die optimiert werden können, was die Verdrahtung bzgl. Speichermanagement betrifft?
solange du nur Werte aus dem Cluster liest, legt LabVIEW nicht notwendigerweise eine Kopie an...
Wenn du aber den Cluster bearbeiten willst, kann das durchaus passieren. Aber wozu gibt es die InPlace-Struktur, die du ja schon kennst (und uns in deinem anderen Thread heute schon gezeigt hast)? Bestimmte Sachen kann man aber nicht "wegoptimieren", z.B. wenn im Cluster Arrays enthalten sind, die sich durch deine Operation vergrößern...
mir geht's weniger ums Freigeben, als über den Verbrauch generell bzw. damit verbunden auch die Performance. Ich möchte möglichst ohne Kopien auskommen.
' schrieb:Du machst sogar zwei kopien. Eine Kopie entsteht mit jedem Drahtabzweig.
Wirklich? Auch wenn ich nur auf einen einzelnen Cluster-Wert zugreife, wird der gesamte Cluster-Inhalt kopiert?
Danke. Ich habe gelesen, man soll Werte nur durch Case-Strukturen führen, wenn man sie dort benötigt. Daher habe ich es außerhalb gelöst.
Wobei beide Lösungen laut dieser Pufferzuweisungsanzeige auf das gleiche raus kommen, wenn ich das richtig sehe.
Dann würde ich sagen, dass nur am Eingang des SubVIs der Cluster kopiert wird.
Eigentlich schade, dass dies bei SubVIs immer der Fall ist, denn sonst sehe ich ihn ihnen nur Vorteile. Bzgl. Performance sind SubVIs daher etwas suboptimal, aber ohne wäre die Wartbarkeit der Blockdiagramme nicht gegeben.
@abrissbirne: Hm, dann werden bei jedem Aufruf die Messwerte kopiert, obwohl ich diese nur benötige, wenn "Ende Messung" true ist.
@Gerd: Huch, wieder was gelernt. Dann wundert mich, dass dies nicht das Standardverhalten ist. Ich wüsste keiner meiner SubVIs, bei denen ich mit der Kopie arbeiten muss.
Gerade bei großen Daten werde ich die Priorität entsprechend setzen, dankeschön.