LabVIEWForum.de
VI wird immer langsamer? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: VI wird immer langsamer? (/Thread-VI-wird-immer-langsamer)

Seiten: 1 2


VI wird immer langsamer? - Robi - 26.03.2009 13:41

Hi Leute,

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!?)


VI wird immer langsamer? - schrotti - 26.03.2009 21:42

Zippe bitte den ganzen Krempel nebst Beispieldatei und lade es hoch. Bestimmt müllst du irgendwo den Speicher voll.


VI wird immer langsamer? - Robi - 27.03.2009 08:31

So hier die ganzen VI´s mit den zugehörigen txt files

Das Main VI ist das Data Handling Robel Analysetool

Gruß Robert


LV VERSION: 8.6


VI wird immer langsamer? - Achim - 27.03.2009 09:42

Ich vermute es liegt eher daran, das du unglaubliche Datenmengen in Arrays hin und her schaufelst...


VI wird immer langsamer? - Robi - 27.03.2009 09:50

Ja aber meiner Meinung nach erklärt das nicht, dass es beim ersten mal 30 sek dauert und danach ca.6 min !?!?!


VI wird immer langsamer? - schrotti - 27.03.2009 10:01

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.


VI wird immer langsamer? - Robi - 27.03.2009 10:44

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)

Gruß Robert


VI wird immer langsamer? - schrotti - 27.03.2009 14:04

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.

Lv86_img[attachment=17458]

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.


VI wird immer langsamer? - IchSelbst - 27.03.2009 21:11

' schrieb:Hast du konkrete Vorschläge was ich verändern kann
Ich hab das mal aus dem Zusammenhang gerissen und beantworte das so wie's jetzt da steht.

Erstens:
Alles, was optisch identisch aussieht, gehört auf jeden Fall in ein SubVI - und nicht per C&P kopiert.

Zweitens:
Datenfluß? Ich vermisse hier komplett den Datenfluß.

Drittens:
Die Propertynodes solltest du auch durch Datenfluß ersetzen.

Viertens:
90.000 mal 64 Strings? Naja. Ob die so ohne weiteres mit "Array löschen" aus dem Speicher verschwinden, bezweifle ich vorerst.



Wenn du die VIs nicht anpassen willst, probiers mal hiermit:


VI wird immer langsamer? - eg - 27.03.2009 21:18

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.