LabVIEWForum.de - maximale Arraygrößen? speicher allokieren?

LabVIEWForum.de

Normale Version: maximale Arraygrößen? speicher allokieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bekomm Pobleme, sobald ich in ein StringArray größere Datenmengen einfügen will.... so bei 10*1000 Zellen geht LabVIEW in die Knie verbraucht einen Haufen Speicher und CPU und hört nich mehr auf zu rödeln. Die Daten werden in zwei verschachtelten Schleifen, Zeile für Zeile, Spalte für Spalte in das Array geschrieben. Zu beginn bekommt das Array die Größe mitgeteilt.
Muss ich da irgendwas beachten? Speicher allokieren? Einen Buffer initialisieren? Kann ich (bzw. sollte ich) die Daten eventl. Zeilenweise am Stück in das Array schieben???

Fragen über Fragen
Grüße
t4b-1re-2
Hi,

wenn du weißt, wie viele Daten du in etwa kriegst, erzeugst du dir mit "Initialize Array" ein entsprechend großes Array. Dessen Daten tauschst du dann mit ReplaceArraySubset aus...das sollte viel schneller gehen, weil du eben nicht bei jedem Schreibvorgang das Ursprungsarray redimensionieren musst, sondern nur Elemente ersetzt!

Ganz allgemein gilt: Array-Operationen sind nicht grade ne Stärke von LV...das dauert immer recht lange, weil immer eine Kopie der Daten im Speicher angelegt wird. Das kann man aber so wie oben beschrieben vermeiden!

Gruß
Achim
Hallo Achim,


wenn ich dich recht verstehe, ist, was du beschreibst, genau das was ich tue (was die blauen Kästchen genau tun sei egal, die sind dev. sauschnell):
[attachment=9520]

Viele Grüße
t4b-1re-2
Hallo,

sieht auf den ersten Blick ganz gut aus, genau so hat es Achim gemeint (falls jetzt nicht noch ein Fehler in der Feedback-Node steckt, ich verwende lieber Shift-Register, deswegen diese Aussage ohne Garantie).

Weitere Ideen:
-Musst du alle Fehler-Cluster als Array aufsammeln?? Vielleicht braucht das am Ende etwas Zeit (nur ne Vermutung).
-Dann deine Idee mit Zeilen ersetzen: Probier's ruhig mal aus, ich meine, das habe ich auch mal getestet, war flotter. Allerdings bei mir bei 2D-Double-Array.
-Brauchst du wirklich Strings als Ergebnis? Ich weiss leider nicht, wie LabVIEW die Speicherbelegung bei einem 2D-String-Array macht. Denn die String-Länge ist ja variabel und liegt nicht fest. Allozieren tust du dein String-Array ja mit einem leeren String. Ich hab keine Ahnung, ob da dann schon eine Mindest-Länge reserviert wird oder nicht. Vielleicht hilft es auch, wenn du dein 2D-String-Array nicht mit einem leeren String allozierst, sondern mit einem String, der aus der maximalen Anzahl an Leerzeichen deiner Daten besteht?

MfG, Jens
Referenz-URLs