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 

Größe eines Cluster-Elements bestimmen (Sizeof)



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!

03.04.2009, 11:52
Beitrag #11

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Zitat:Im konkreten Fall betrug die Größe 30'000 x 4. Das hat dann die Zykluszeit um ca. 8ms vergrößert.
Naja, gut. 30'000*4*DBL ist jetzt noch noch nicht so groß. Allerdings würde ich derartige Arrays, die ja wahrscheinlich Sampledaten enthalten, nicht in Clustern transportieren. Auch die 8ms würden mich jetzt nicht so stören - mein Raster läge bei 50ms.

Zitat:Es enthält alle Referenzen der Bedienelemente des Hauptprogramms.
Mit anderen Worten lauter unnützes Zeug. Pipe Zumindest dann, wenn die Referenz nur sporadisch - also selten, also nie - verwendet wird.

Zitat:Damit können auch Sub-VIs z. B. Elemente deaktivieren.
Diese Funktionalität über Referenzen zu machen widerspricht grundlegenden Programmstrukturen: Kapselung, Modularität etc. Du würdest ja auch nicht in C dir eine Referenz auf ein Bedienelement einer anderen Klasse machen, nur um in dieser Klasse ein Element zu deaktivieren. Dort nimmst du ja auch Propertys. In LV geht das genau so.

[*grübel*]

Ich glaube du solltest mal deine Datenstruktur im allgemeinen überdenken.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.04.2009, 12:40
Beitrag #12

FEL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 66
Registriert seit: Jun 2007

2015
2005
DE_EN

04229
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
' schrieb:Naja, gut. 30'000*4*DBL ist jetzt noch noch nicht so groß. Allerdings würde ich derartige Arrays, die ja wahrscheinlich Sampledaten enthalten, nicht in Clustern transportieren. Auch die 8ms würden mich jetzt nicht so stören - mein Raster läge bei 50ms.
Wenn ich in der Entwicklungsumgebung arbeite, habe ich immer eine Zykluszeit von 5ms. Da sieht man schnell wenn's
irgendwo harkt. Sonst arbeite ich mit 50ms. Wobei der Kunde 10ms haben wollte. Habe ihn schon auf 30ms
hochgehandelt.
Ich habe mich halt gewundert, dass nach einiger Zeit das Proggi eine höhere Zykluszeit hatte. Und wollte der Sache auf
den Grund gehen. Ein richtiges Problem ist es (noch) nicht.


' schrieb:Diese Funktionalität über Referenzen zu machen widerspricht grundlegenden Programmstrukturen: Kapselung, Modularität etc. Du würdest ja auch nicht in C dir eine Referenz auf ein Bedienelement einer anderen Klasse machen, nur um in dieser Klasse ein Element zu deaktivieren. Dort nimmst du ja auch Propertys. In LV geht das genau so.
Weiß nicht, ob wir aneinander vorbeireden? Aber wie soll man den sonst in LV in einem VI ein Bedienelement
eines anderen VI's manipulieren (deaktivieren o. ä.)? Man muß dem einen VI die Referenz des Elements übergeben
und kann dann dort via Property Node darauf zugreifen.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2009, 18:16 (Dieser Beitrag wurde zuletzt bearbeitet: 03.04.2009 18:17 von IchSelbst.)
Beitrag #13

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Zitat:Wenn ich in der Entwicklungsumgebung arbeite, habe ich immer eine Zykluszeit von 5ms. Da sieht man schnell wenn's irgendwo harkt. Sonst arbeite ich mit 50ms. Wobei der Kunde 10ms haben wollte. Habe ihn schon auf 30ms hochgehandelt.
Was meinst du denn mit Zykluszeit?

Abtastraster für Datensampling?
Das kannst du (locker) auf 1kHz stellen und trotzdem eine Programmdurchlaufzeit von 50ms einstellen. Das eine - Abtastrate - und das andere - Programmzykluszeit - sind komplett getrennt zu sehen. (Ebensolches gilt im übrigen auch für Vorgabekurven.)

Steuerst du Abläufe mit der LV-Software?
Und bist auf ein nach Möglichkeit genaues und wiederholbares Zeitraster im Bereich von 10ms (1ms..100ms) auf Applikationsebene angewiesen? Hm. Da würde ich den Kunden auch auf 50ms (bei manchen Sachen sogar bis 250ms) hochhandeln. Weil: Du weist nie, wann Win im Hintergrund mal so viel arbeitet, dass für anderen Applikationen nicht mehr genug Zeit ist.

Zitat:Ich habe mich halt gewundert, dass nach einiger Zeit das Proggi eine höhere Zykluszeit hatte. Und wollte der Sache auf den Grund gehen.
Letzteres ist natürlich sinnvoll: Wenn du ständig, also alle 10ms den großen, mit dem Array bestückten Cluster per Datenfluss hin und her schiebst, könnte ich mir vorstellen, dass durch das viele Kopieren schon mal langsam der Speicher vollläuft - und von LV im Hintergrund umstrukturiert werden muss. Hast du mal im Taskmanager gekuckt, was Speicher und CPU-Belastung machen?

Zitat:Man muß dem einen VI die Referenz des Elements übergeben und kann dann dort via Property Node darauf zugreifen.
Nicht zwangsläufig.
Du kannst auch eine Queue verwenden. Das eine VI (SubVI) schreibt Steuerbefehle in eine Queue, die vom MainVI ausgelesen wird. Das ist dann sowas Ähnliches wie das Message-System unter Win32.


Nachtrag:
Wo ist denn der "Antworten"-Button bei allen Eintragen außen meinen? Ich kann ja nicht mehr direkt antworten.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2009, 20:06
Beitrag #14

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Offtopic2
' schrieb:Nachtrag:
Wo ist denn der "Antworten"-Button bei allen Eintragen außen meinen? Ich kann ja nicht mehr direkt antworten.
Hehe, es gab schon Überlegungen, wer diese Änderung als Erster bemerkt und sich als "beschwert".

Also gut, der Button ist aus folgendem Grund verschwunden:
In letzter Zeit haben die Threads zugenommen, bei denen immer "blind" der besagte Button zum Beantworten des vorhergehenden Beitrags benutzt wurde. Vielfach hat dabei aus unserer Sicht die Lesbarkeit sehr gelitten, da durch diesen Button automatisch der vorherige Beitrag als Zitat eingefügt wurde. Dies ist aber meistens völlig überflüssig. Ausnahmen bestätigen natürlich die Regel, z.B. wenn man wie bei dir auf ausgewählte Abschnitte antwortet.

Deshalb also in Zukunft: Zum Zitieren eines Beitrages ist aktiv der Zitieren-Button zu drücken, und dann der Antwort-Button am Anfang oder Ende des Beitrages.

Ich hoffe, du kannst damit leben.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2009, 20:27
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Auch Offtopic2
' schrieb:Zum Zitieren eines Beitrages ist aktiv der Zitieren-Button zu drücken, und dann der Antwort-Button am Anfang oder Ende des Beitrages.
Erstens: Klappt.
Zweitens: Ob das Zitieren bei "Nicht zitieren" zitiert oder bei "Zitieren", ist mir eigentlich egal. Hauptsache Zitat. Yahoo

Zitat:Ich hoffe, du kannst damit leben.
Wie heißt es schon bei Animal Farm: Und die Unschuldigen haben mit den Schuldigen zu leiden. Metal

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2009, 20:47
Beitrag #16

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Habe zwar nicht alles durchgelesen, sorry, aber:

Element unbundeln mit Type Cast in binäres String umwandeln umd mit String Length die Größe in Bytes ermitteln.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.04.2009, 19:14
Beitrag #17

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Typecast ist ungünstig (funktioniert nicht immer). Ein Flatten to String (ohne Prepend Array size) mit stringlength danach funkioniert afaik immer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2009, 20:36 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2009 07:47 von rolfk.)
Beitrag #18

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Größe eines Cluster-Elements bestimmen (Sizeof)
' schrieb:Typecast ist ungünstig (funktioniert nicht immer). Ein Flatten to String (ohne Prepend Array size) mit stringlength danach funkioniert afaik immer.

Stimmt! Typecast funktioniert nur wenn der Datentype Flat ist. Flat heisst hier es ist entweder ein Skalar, Array oder String oder im Falle eines Clusters enthält er nur Skalars oder andere Cluster die nur Skalars enthalten.

Flatten To String gibt tatsächlich den ganzen Speicher den der Cluster momentan belegt als einen String zurück. Nur würde ich das sicher nicht zur Laufzeit in einem Programm machen nur um festzustellen wie gross der Cluster im Moment ist da Flatten To String alle Information aus dem Cluster in einen neuen linearen Speicherbereich kopieren muss und das kostet Zeit!!

Und zur Editierzeit nur so mal schnell zum sehen wie gross der eigene Cluster zur Laufzeit werden wird geht leider auch nicht, da zu dem Zeitpunkt die Arrays im Cluster wohl noch nicht alle in vollem Ornat alloziert sind und das wird wohl doch der Löwenanteil des gebrauchten Speichers ausmachen ansonsten hast Du einen wirklichen Monstercluster produziert. Das heisst der erhaltene Wert wird dem realen zur Laufzeit nicht annähernd entsprechen.

Alles in allem denke ich dass der OP doch einmal seine Datenstrukturen überdenken sollte. Ein Cluster der im ganzen Programm durchgereicht wird für Statusinformationen und dergleichen mag ja noch angehen aber darin auch alle Messwerte abzuspeichern verletzt so ziemlich jedes Designkriterium dass man Daten und Steuerung soviel möglich entkoppeln sollte um eine Software überschaubar und wartbar zu halten.

Das schreit ja gerade zu nach Objekten, entweder in der Form von Intelligenten Variablen (LV2 Style Globals) oder aber geich richtigem LVOOP oder seinen Vettern.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.04.2009, 06:49
Beitrag #19

FEL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 66
Registriert seit: Jun 2007

2015
2005
DE_EN

04229
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
Danke Leute, für die vielen Anregungen. Komme vermutlich erst in den nächsten Tagen zum Ausprobieren.
Von "Intelligenten Variablen (LV2 Style Globals) oder aber geich richtigem LVOOP oder seinen Vettern" habe ich
nicht nie was gehört. Da muß ich mich erst mal reinlesen.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.04.2009, 10:06
Beitrag #20

FEL Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 66
Registriert seit: Jun 2007

2015
2005
DE_EN

04229
Deutschland
Größe eines Cluster-Elements bestimmen (Sizeof)
' schrieb:Typecast ist ungünstig (funktioniert nicht immer). Ein Flatten to String (ohne Prepend Array size) mit stringlength danach funkioniert afaik immer.
Super, das ist genau das, was ich gesucht habe. Danke.

Kann es sein das "Intelligenten Variablen (LV2 Style Globals)", "funktionale SubVIs" bzw. "Old Style Globals" alles das gleiche meint?
Also ich habe mir ein VI gebastelt, wo die Datenarrays drin sind. Dazu eine Case-Struktur mit mehreren Cases ("Clear", "Init",
"Add Data", "Get Data"). Bei Aufruf des VI's muß man angeben, welche Funktion/Methode verwendet werden soll.
Habt ihr sowas gemeint?
Zumindest konnte ich damit einen positiven Effekt bezüglich Prozessorauslastung und Speicherbedarf feststellen.

Gruß Micha
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
  Elemente Cluster in Cluster ansprechen simcum 3 3.713 02.10.2023 10:49
Letzter Beitrag: th13
  Datentyp eines Elements herausfinden Mrindfleisch 15 10.599 12.02.2021 08:26
Letzter Beitrag: Mrindfleisch
  Wie ändert man die Größe eines Bildes im Anzeigefenster des Frontpanels Gellerpa 15 7.923 21.05.2018 18:32
Letzter Beitrag: Gellerpa
  Sichtbarkeit eines Fensters bestimmen THL 9 5.835 06.12.2016 14:16
Letzter Beitrag: BNT
  Element in Cluster of Array of Cluster ausblenden R.Fuertig 4 7.278 26.09.2016 07:47
Letzter Beitrag: GerdW
  Variable Größe eines Arrays mit VISA-Adressen jusaca 4 4.559 10.02.2016 10:13
Letzter Beitrag: jusaca

Gehe zu: