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 

In Place bei variablen Array-Längen



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!

10.02.2014, 14:38
Beitrag #1

D_Sev Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 56
Registriert seit: Nov 2013

2012
2011
DE_EN


Deutschland
In Place bei variablen Array-Längen
Ich stelle mir grad die Frage ,was eine InPlace-Struktur nutzt, wenn diese auf ein Array angewand wird bei dem sich die Länge ändern kann (siehe Bild).


Ist es so, dass für eine Array erst einmal eine bestimmte Länge allokiert wird - und sollte diese dann doch überschritten werden, wird die InPlace-Struktur hinfällig und es wird eine Kopie erzeugt?

Oder wird per se eine Kopie erzeugt?

Oder was anderes ?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.02.2014, 14:51
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: In Place bei variablen Array-Längen
Hallo D_Sev,

das gezeigte Beispiel ist etwas irreführend:
Die InPlace-Struktur bezieht sich auf den Cluster und nicht auf das darin enthaltene Array!

Der Cluster selbst wird (nach Möglichkeit) "in place" bearbeitet.
Wenn sich das enthaltene Array aber längenverändert, dann muss der LV-interne Memorymanager tätig werden.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2014, 15:12
Beitrag #3

D_Sev Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 56
Registriert seit: Nov 2013

2012
2011
DE_EN


Deutschland
RE: In Place bei variablen Array-Längen
Wenn ich also nun wollte, dass der Memorymanager nicht tätig wird, müsste ich das Array mit der richtigen Länge vorinitialisieren ?

Allokiert der Memorymanager nicht immer einen gewissen Sicherheitspuffer mit ? Denknach


Was wäre, wenn ich das Array mit 10 Elementen initialisiere - dann aber nur ein Array mit 5 Elementen reinstecke? Dann wird er mir doch wohl nicht extra eine Kopie erzeugen oder?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.02.2014, 15:18
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: In Place bei variablen Array-Längen
Hallo D_Sev,

Zitat:dass der Memorymanager nicht tätig wird, müsste ich das Array mit der richtigen Länge vorinitialisieren ?
Ja.

Zitat:Allokiert der Memorymanager nicht immer einen gewissen Sicherheitspuffer mit ?
Ja.

Zitat:Was wäre, wenn ich das Array mit 10 Elementen initialisiere - dann aber nur ein Array mit 5 Elementen reinstecke? Dann wird er mir doch wohl nicht extra eine Kopie erzeugen oder?
Dann wird der MemoryManager wohl weiterhin den gleichen Speicherblock für dein Array weiterverwenden...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2014, 08:50
Beitrag #5

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: In Place bei variablen Array-Längen
Gibt es eigentlich eine Möglichkeit einzelne Elemente des Arrays in dem Cluster in place zu bearbeiten?

Wenn man einfach eine zweite in Place Struktur "innenliegend" nimmt dürfte ja erst das Array in Place setzen, dann aber anschließend komplett das ganze Array überschreiben wenn ich das auf der Äußeren setzen lasse. Richtig? Wie würde ich sowas dann also sinnvollerweise machen?

Gruß Kiesch

P.S: Hatte das Problem genau in der Art (Array in Cluster wo bei dem Array nur ein Element angefasst werden soll (und die Größe konstant bleibt), das aber sehr oft) letztens und habs letztlich umgangen indem ich den Cluster beseitigt habe.

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2014, 08:52
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: In Place bei variablen Array-Längen
Hallo Kiesch,

einfach Strukturen schachteln:
   

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2014, 09:26 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2014 09:27 von Kiesch.)
Beitrag #7

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: In Place bei variablen Array-Längen
Ach das funktioniert doch? Hätte gedacht da überschreibt er dann in der äußeren IP Struktur das komplette Array. Bei LV ist man ja eigentlich immer auf der sicheren Seite wenn man von ausgeht das er eher ne Kopie mehr macht als eine zu wenig Big Grin

Heißt also unterm Strich quasi:

Mit der IP Struktur arbeite ich de facto mit Referenzen auf ein Wire?

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2014, 09:29
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: In Place bei variablen Array-Längen
Hallo Kiesch,

mit der InPlace-Struktur weist du den Compiler an, die betreffenden Daten ja eben in place zu bearbeiten!

Nach dem, was man im NI-Forum so liest, ist die InPlace-Struktur aber auch überbewertet - zumindest in den aktuellen LV-Versionen. Durch Änderungen am Compiler werden auch "IndexArray/ReplaceArraySubset"- oder "UnBundle/Bundle"-Kombinationen sehr gut als in place-Operation erkannt und ausgeführt. Bei meinen letzten Zeitmessungen schnitt die InPlace-Struktur meist langsamer ab als eine gleichwertige IndexArray/ReplaceArraySubset-Kombination…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.02.2014, 14:49 (Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2014 14:50 von Kiesch.)
Beitrag #9

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
RE: In Place bei variablen Array-Längen
Sehr erhellend. Danke :-)

*edit* Ach mist und leider kann ich als nicht Thread ersteller nicht bedanken. Wie doof

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Pick & Place - Schleife mit neuen Koordinaten Indy 4 4.203 13.11.2013 21:25
Letzter Beitrag: GerdW
  Zeile aus Array auswählen und in einzelne Variablen schreiben Schmidtzke 3 4.196 22.06.2012 10:46
Letzter Beitrag: GerdW
  In Place Element Structure wiktor 1 4.609 15.07.2011 14:20
Letzter Beitrag: jg
  in place element gottfried 4 4.902 12.12.2009 11:19
Letzter Beitrag: schrotti
  Array nach unterschiedlichen Längen zerteilen und bereitstellen Only08 3 4.002 13.05.2008 14:17
Letzter Beitrag: Only08

Gehe zu: