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 

Performance-Frage: Große Arrays in Cluster-Schieberegister



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!

26.07.2010, 09:34 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2010 09:37 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Guten Morgen,

ich verwende für mehrere parallele Messungen Schieberegister. Angeschlossen sind jeweils Cluster, die u.a. 2 Arrays mit Double-Messwerten beinhalten und die ich in einer Schleife fortlaufend fülle.

Über das Tool "Leistung und Speicher" konnte nicht feststellen, was genau lange benötigt, aber mit zunehmender Messzeit wird mein Programm langsamer.
Da ich mehrere Werte setzen/auslesen muss, habe ich als Schieberegister den Cluster gewählt, auch wenn ein direktes Array-Schieberegister vermutlich schneller wäre.
Da ist mir der Verdrahtungsaufwand allerdings zu hoch.

Ist mein Vorgehen mit den Clustern für viele Messwerte (die Arrays könnten je ca. 20.000 Werte fassen) zu empfehlen oder geht es schneller (Referenzen o.ä.)?

Die Messwerte füge ist fortlaufend über "Array erstellen" (Eingänge verknüpfen) hinzu. Das wird generell nicht empfohlen, da dies langsam ist und laufend Werte hin und her kopiert werden müssen. Nur ist mir die genaue Werteanzahl unbekannt, weshalb ich von vornherein kein Array initialisieren kann, bei dem ich dann die Werte nur noch ersetze.
Ich vermute zumindest, dass bei der Cluster-Array-Geschichte die Ursache liegt.

   

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

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo,
im Prinzip weißt du, wo dein Problem liegt, und hast es auch schon beschrieben, nämlich die Build-Array-Funktion:
' schrieb:Die Messwerte füge ist fortlaufend über "Array erstellen" (Eingänge verknüpfen) hinzu. Das wird generell nicht empfohlen, da dies langsam ist und laufend Werte hin und her kopiert werden müssen.
Das braucht Zeit. Wobei jetzt 20.000 Werte noch nicht das Riesen-Array ist.
' schrieb:Nur ist mir die genaue Werteanzahl unbekannt, weshalb ich von vornherein kein Array initialisieren kann, bei dem ich dann die Werte nur noch ersetze.
Kannst du vielleicht mit einer Maximalgröße des Arrays arbeiten? z.B. 50.000 Werte, die zu Beginn mit "NaN" vorbelegt sind?

Von Referenzen auf Controls oo.ä. rate ich ab, das ist garantiert langsamer.

Ob eine Data Value Reference (neu seitLv09_img2) was bringt, kann ich nicht sagen, habe das noch nie gebraucht:
   

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
26.07.2010, 10:14
Beitrag #3

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo Jens,

genau diese Referenz meine ich (Data Value).
Ich denke schon, dass ich das Array vorbelegen könnte. Darf ich denn dann auf "NAN" prüfen, um das Ende des Arrays festzustellen oder wie geht man hier vor?

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

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo Mechatroniker,

wenn du die Arrays mit NaN vorbelegst, kannst du schlecht mit NaN auf Arrayende prüfen... Oder wie meinst du das?

Pack dir doch einfach einen Datencounter mit in den Cluster. Dort merkst du dir, wieviele Elemente schon ins Array geschrieben wurden und addierst die neuen Elemente einfach dazu. Bei Überlauf ("Array voll") musst du dann alte Einträge überschreiben...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2010, 10:26
Beitrag #5

SeBa Offline
LVF-Guru
*****


Beiträge: 2.025
Registriert seit: Oct 2008

09SP1 & 10 FDS
2008
DE

65xxx
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Während Andere bereits geantwortet haben, hab ich gemütlich einen Kaffee geschlürft und mal was zusammengeklickt.

Daher wurden die Grundelemente ggf. bereits erwähnt.

-> Array mit Size X und NaN vorbelegen, Array Replace nutzen, per Index Counter merken wo im Array man ist,

-> das Array erweitern, falls der Counter nahe dem ArraySize

Lv09_img2
Sonstige .vi  Array_dynamicSize.vi (Größe: 31,94 KB / Downloads: 294)


   


Gruß SeBa

Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.

Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.

Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2010, 10:27 (Dieser Beitrag wurde zuletzt bearbeitet: 26.07.2010 10:28 von Matze.)
Beitrag #6

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo Gerd

' schrieb:wenn du die Arrays mit NaN vorbelegst, kannst du schlecht mit NaN auf Arrayende prüfen... Oder wie meinst du das?
Array-Ende war falsch ausgedrückt. Ich meinte das Ende der eingetragenen Messwerte. ALso ab wann das 1. Mal NAN enthaten ist.
Aber stimmt, ich könnte die Werte auch nebenher hochzählen.

Was mir fast lieber wäre, wenn ich das Array Stück für Stück vergrößern kann.
Zu Beginn z.B. mit Länge 2000. Wenn die Anzahl der Messwerte 2000 übersteigt, wird die Länge auf 4000 gesetzt.

Nachtrag @SeBa: Danke, das muss ich erstmal auf mich einwirken lassen. Big Grin

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

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
' schrieb:Was mir fast lieber wäre, wenn ich das Array Stück für Stück vergrößern kann.
Zu Beginn z.B. mit Länge 2000. Wenn die Anzahl der Messwerte 2000 übersteigt, wird die Länge auf 4000 gesetzt.
Da sehe ich eine potenzielle Fehlerquelle, wenn deine Applikation lange laufen soll. Da LV den Speicher am Stück allokieren muss und dein RAM eventuell schon zu fragmentiert ist, kann es sein dass LV keinen Speicher mehr am Stück erhält und die ganze Sache geht in die Hose.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2010, 10:32
Beitrag #8

macmarvin Offline
CLA
***


Beiträge: 445
Registriert seit: Sep 2006

2014
2004
EN

81373
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Soll es denn ein endlicher Puffer für eine Messung oder ein Ringpuffer sein?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.07.2010, 10:35
Beitrag #9

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo

@abrissbirne: Hm, das könnte sein. Wobei SeBas Lösung genau das macht, wenn ich das richtig sehe.
@macmarvin: Der Puffer soll endlich sein.

Ich erfasse zuerst sämtliche Werte und speichere diese z.B. anschließend in einer Datei oder werte sie aus.

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

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
Performance-Frage: Große Arrays in Cluster-Schieberegister
Hallo Mechatroniker,

wenn der Puffer endlich sein soll, warum willst du ihn dann stückweise (mit den dir bekannten Nachteilen) anlegen?

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
  Elemente Cluster in Cluster ansprechen simcum 3 3.728 02.10.2023 10:49
Letzter Beitrag: th13
  Verwendung Schieberegister de_la_questa 2 3.304 04.01.2021 17:26
Letzter Beitrag: GerdW
  Probleme mit Performance (Berechnungen und Grafik) catbull 5 4.687 21.07.2018 10:13
Letzter Beitrag: IchSelbst
  Performance beim Betrieb über WLAN Heber 9 5.911 22.08.2017 14:28
Letzter Beitrag: Heber
  Schieberegister Initialisierung mit Array => Not a Number Roland 7 8.239 03.07.2017 15:58
Letzter Beitrag: Roland
  Element in Cluster of Array of Cluster ausblenden R.Fuertig 4 7.289 26.09.2016 07:47
Letzter Beitrag: GerdW

Gehe zu: