INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Pufferzuweisung bei "Nach Namen aufschlüsseln"



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!

13.12.2010, 09:19 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2010 09:21 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Hallo,

gibt es eine Möglichkeit, die Pufferzuweisung bei "Nach Namen aufschlüsseln" / "Unbundle by Name" zu verhindern? Also so, dass ich direkt mit den Werten arbeite?

Ich habe viele Messwerte in einem Cluster und möchte nicht, dass laufend beim Auslesen die Messwerte im Speicher kopiert werden.

Eine Inplace-Elementstruktur bringt hier nichts, da ich die Werte nur lesen möchte. Und ob das mit Datenreferenzen geht, weiß ich nicht. Wenn ja, wäre ein kleines Beispiel nett.

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.12.2010, 09:23
Beitrag #2

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Pauschal: Jein

Die Buffer sind sehr vom Rest des Codes abhängig. Ein Versuch ist die Inplacestructure immer Wert.

Ist das eine konkrete Frage weil du an einer Stelle Performance/Speicher Probleme hast?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 09:36 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2010 09:47 von Matze.)
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Hallo

' schrieb:Ist das eine konkrete Frage weil du an einer Stelle Performance/Speicher Probleme hast?
Ja, ist es. Ich erfasse Messwerte, die ich in einem Cluster ablege (da sind auch noch einige andere Daten enthalten und ohne Cluster sinkt die Übersicht aufgrund vieler Drähte).

Mein Speicher läuft z.T. voll bei vielen Messwerten, da ich in verschiedenen SubVIs "Unbundle By Name" nutze. Über das Pufferzuweisungs-Tool sieht man, dass Speicher zugewiesen wird.
Das tritt bei Klassen-Daten und bei normalen CLustern auf:

   

Edit: Ich verwende mittlerweile einige Konstrukte wie dieses, in der Hoffnung, beim fortlaufenden Aufruf (Schleife, die das immer zyklisch aufruft) wird kein neuer Speicher zugewiesen:

   

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 10:10
Beitrag #4

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
Pufferzuweisung bei "Nach Namen aufschlüsseln"
"Data Value References" wirken Wunder!
Ich hab meinen RingPuffer damit geschrieben und seit dem Läuft alles zum Einen rund und zum Anderen mit viel weniger CPU Last (zum Vergleich: RingPuffer mit GOOP3-Klassen CPU-Last bei 95% -> SW-crash, RingPuffer mit GOOP4-Klassen CPU-Last bei 10%, Code wurde 1<->1 von GOOP3 auf GOOP4 portiert)

Pack deinen Cluster in eine "Data Value Reference" und wende darauf das "in place element read" an. So kannst du skalare Grössen ohne "CPU-Verlust" lesen.
Im Bild:
Die Variable "Buffer" besteht zum Teil aus 2D-dbl mit mehreren 10000 Einträgen, meinen Pufferstatus lese ich dann so aus. GOOP3 hat meine System an den Anschlag gebracht mit GOOP4 läuft es nun...

Gruess,
Christian


Angehängte Datei(en) Thumbnail(s)
   

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 14:07
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Hallo Christian,

danke. Dass die Inplace-Struktur auch in der Art etwas bringt, wusste ich noch nicht. Ich dachte, man müsse lesen und Änderungen schreiben.
Was ich nicht verstehe: Wieso soll die Struktur keine CPU-Last benötigen? Du liest die Werte aus und genau dann wird ebenfalls Speicher zugrwiesen, würde ich sagen. Spätestens dort, wo du sie aus der Inplace-Struktur heraus führst.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 14:17
Beitrag #6

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
Pufferzuweisung bei "Nach Namen aufschlüsseln"
"Keine" war vielleicht etwas übertrieben.
Auf jeden Fall wird weniger CPU-Last benötigt, da ich nur skalare Grössen lese. Das was viel Aufwand kostet ist das Lesen der Buffer-Variablen und die wird nicht nach "draussen" geführt und somit kein Speicher dafür alloziert.

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.12.2010, 17:04
Beitrag #7

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Und wo genau befindet sich nun das Messwert-Array?

Oder wärst du so nett, mir die Stelle zu zeigen, wo du die Werte zuweist und ausliest, so als ganz kleine Demo?
Diese Daten-Referenzen sind mir noch nicht eingeleuchtet.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 21:57
Beitrag #8

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Das Messwert Array schreibe ich zyklisch auf Festplatte, da wirst du um einen direkten Zugriff nicht drumrum kommen. Wie geschrieben, bei mir war es einen Ausschnitt aus meinem generischen Ringpuffer.

Wahrscheinlich reden (schreiben?!) wir aneinander vorbei und/oder ich hab dich falsch verstanden. Da ich deinen Code und den gesamten Aufbau nicht kenne, habe ich mich darauf bezogen, dass du immer wieder auf deine "Statisch.xxxx", "Dynamisch.yyy" Parameter zugreifen möchtest die mehr oder minder skalare Grössen sind (ein Array mit wenigen Einträgen bezeichne ich hier mal als Skalar, so wie HF-Entwickler Signale mit mehrere MHz als nervösen Gleichstrom bezeichen). Liest du bei jedem Aufruf von denen deine Messwerte mit auf, hast du grossen Kopieraufwand.
Du hast geschrieben, dass du in mehreren SubVIs den Cluster zerlegst und da bin ich davon ausgegangen, dass du auch in diesen deine Messwerte auch immer mit "unbundel"st. Rufst du in deinen SubVIs aber die Daten-Referenz auf und kopierst du nur die skalaren Grössen, dann sparst du dir den Aufwand für die Messwerte.

Hast du jedoch ein allgemeines Problem mit deinen Messwerten, dann würde ich dir einen Ringpuffer empfehlen, der dann die Messwerte auf HDD speichert, wenn dein Code gerade Zeit hat....

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.12.2010, 22:28 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2010 22:30 von Matze.)
Beitrag #9

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Pufferzuweisung bei "Nach Namen aufschlüsseln"
Hallo,

also es sind ca. 12.000 Messwerte. Das ist nicht sonderlich viel, aber wenn man das öfters "unbundled", summiert sich das schon auch und geht auf die Performance. Auf HDD speichern geht nicht (ist ein Real-Time-System).
Ich lese da die Werte vom FPGA ein (als FXP), und skaliere diese in DBL (soweit zum Hintergrund, aber das tut nichts zur Sache). Dann lege ich sie in einem Cluster ab und möchte in mehreren SubVIs die Messwerte durchlaufen können (nur lesend).

Und beim "Unbundle" wird eben alles kopiert, was ich vermeiden wollte. Daher wäre eine Lösung, direkt mit dem Cluster zu arbeiten, schön. Also dass ich direkt auf die Speicheradressen zugreife (ähnlich einem Pointer in C/C++), nur eben komfortabler/sicherer.

Vielleicht würde ich auch keinen großen Unterschied merken, aber einen Versuch wäre es Wert.

Grüße

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2010, 07:00
Beitrag #10

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
Pufferzuweisung bei "Nach Namen aufschlüsseln"
D.h. du möchtest ein post-processing machen, oder?
Wenn ja, dann würde ich mal versuchen die Rechenoperation in der "In place" Struktur durchführen zu lassen....

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Library Namen und Pfad von VI ermitteln Lien_Alere 4 6.398 20.12.2019 08:56
Letzter Beitrag: GerdW
  Cluster aufschlüsseln immer 9 Elemente Philipp99 1 2.837 12.05.2019 23:17
Letzter Beitrag: jg
  Zeilenumbruch in Namen und refnums? jusaca 3 4.198 13.06.2016 08:28
Letzter Beitrag: jusaca
Question Cluster dynamisch nach Name aufschlüsseln olmethn 4 4.913 29.06.2015 11:20
Letzter Beitrag: olmethn
Question Namen aus CTL olmethn 4 4.771 26.06.2015 09:13
Letzter Beitrag: olmethn
Question Cluster nach Namen aufschlüsseln und aus den Namen jeweils eine Messdatei erzeugen Michael26 11 10.288 29.01.2015 09:40
Letzter Beitrag: GerdW

Gehe zu: