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!
hab wieder einmal ein Problem.
Und zwar habe ich ein VI mit einigen Sub VI´s das mir ein txt File öffnet und die Daten darin entsprechend einem INI File umwandelt und ausgibt.
Wenn ich ein z.b 3Mb großes File einlese dauert es beim ersten mal vlt. 30sek bis die fertigen Daten in den Ausgangsarrays liegen.
Lade ich jetzt dieses File nochmal dauert es ca. 3 min???
An was kann das liegen.
Das ganze öffnen und auswerten usw. mache ich in einer sequenz.
Hier mal ein Bild davon
Gruß Robert
(PS: Ich würde sogar am Anfang der Sequenz die Sub VI´s und die Arrays re-initialisieren!?)
Mh, wie sag ichs am schonendsten? Du MUSST deine VIs auf jeden Fall gründlich überarbeiten. Neben den unsinnigen 2D Arrays sehe ich vor allem den infaltionäre Gebrauch von Invoke Nodes kritisch. Race Conditiones sind reichlich vorhanden. Beim ersten Aufruf wurden die jedenfalls Daten nicht durchgeschaufelt.
Edit: Unsinnig deswegen, weil du beispielsweise den gelesenen Spreadsheet String in ein 2D Array umwandelst, eine Zeile herausholst, es aber weiterhin ein 2D Array ist. Warum nicht 1D? Mach dich mit den Arrayfunktionen nochmals vertraut.
Also das meine VI´s sicher viele Sachen enthalten die man besser machen kann ist mir bewusst.
ABER: Hast du konkrete Vorschläge was ich verändern kann damit es immer mit gleichbleibender Geschwindigkeit läuft?
Ich meine das mit 2D Arrays wo nur 1 Zeile drinnen steht ist sicher nicht schön ganz klar aber dieser Part bremst das Programm nicht unbedingt aus oder?
Was meinst du mit Race Conditions? (Sry für die blöde Frage ich kann mir aber gar nichts drunter vorstellen)
Race Conditions entstehen, wenn nicht eindeutig geklärt, wann wer auf auf bspw. ein Variable zugreift. Anbei ein kleines VI. Setze bei 1 eine Zahl ein und lass es laufen.
Versuche, alle Eigenschaftsknoten aus deinen VIs zu entfernen und etwas besser mit den Arrays umzugehen. Wenn du numerische Werte in dem File speicherst, wäre es sinnvoll, du wandelst den Spreadsheet String gleich in einen numerischen Typ um und versuche, weniger Kopien der Arrays anzulegen.
Nimm doch das LabVIEW Profile Tool und schau nach wo dein Speicher hin verschwindet. Du kannst dir alle Buffer Allocations anschauen und unnötige entfernen (in dem du dein VI optimierst), du solltest dir überlegen ob du nur bestimmte Stücke von Daten auswertest und nicht alles zusammen.