LabVIEWForum.de
Anwendung wird nach ca. 130 Schleifenduchläufen langsam - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Anwendung wird nach ca. 130 Schleifenduchläufen langsam (/Thread-Anwendung-wird-nach-ca-130-Schleifenduchlaeufen-langsam)



Anwendung wird nach ca. 130 Schleifenduchläufen langsam - amin - 16.03.2009 12:02

Hallo,

ich habe ein Problem. Und zwar wird mein Programm nach ca. 130 While Schleifendurchläufen etwa halb so schnell. Und ich verstehe nicht warum. Denn eigentlich sollte die Anzahl der Durchläufe keine Resourcen verbrauchen, oder ? Ich habe zwar ein Schieberegister drin, welches ein immer längeres Array erstellt. Dieses wrd aber mit hilfe einer Case Strucktur rechtzeitig beendet. Was auch funktioniert, da ich mir die Arraylänge zum Test anzeigen lassen habe.

Ansonsten stekcne in der Schleife kleinerlei von der Anzahl der Schleifenwiederholungen abhänge Elemente.

Hat jemand eine Idee woran sowas sonst noch liegen kann.


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - eckilein - 16.03.2009 12:05

Ich denke ohne die Schleife zu sehen ist das recht schwer zu sagen. Wären nur Vermutungen die man aufstellen kann.


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - IchSelbst - 16.03.2009 13:01

Da sag ich doch mal einkalt:

' schrieb:Ich habe zwar ein Schieberegister drin, welches ein immer längeres Array erstellt.
Genau dieses Array respektive dieses Verfahren zum Speichern von Daten in Arrays ist am Langsamerwerden Schuld.

Du musst das Array vor Beginn der Schleife mit dem Maximalwert vorbesetzen und innerhalb der Schleife die Daten mit "In Array ersetzen" ins Array bringen - nicht mit "Array erstellen" oder "An Array anhängen".


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - amin - 16.03.2009 13:39

' schrieb:Da sag ich doch mal einkalt:

Genau dieses Array respektive dieses Verfahren zum Speichern von Daten in Arrays ist am Langsamerwerden Schuld.

Du musst das Array vor Beginn der Schleife mit dem Maximalwert vorbesetzen und innerhalb der Schleife die Daten mit "In Array ersetzen" ins Array bringen - nicht mit "Array erstellen" oder "An Array anhängen".

Also wie gesagt stoppe die weitere Erstellung des Array, was ich auch jetzt zum test mittels der Arraygrösse überprüft habe.
Das Array vorher auf 0 zu defnieren gefällt mir nicht so richtig, da ich dieses Grafisch innerhalb der Schleife ausgebe, und es sich so schick aufbaut. Aber falls Du wirklich meinst dies das Problem ist, muss ich mir was anderes überlegen.

Gruss

amin


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - IchSelbst - 16.03.2009 13:48

' schrieb:Aber falls Du wirklich meinst dies das Problem ist, muss ich mir was anderes überlegen.
Zumindest in 90% trifft das zu.

Poste mal das/ein VI oder stell ein Bild ein!


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - amin - 16.03.2009 14:25

Hallo,

hab mal kurz ein File erstellt, damit man sieht wie ich das mit dem Array gelöst habe (also vom Schema her).
Die Anwendung ist zwar total einfach und daher bekomme ich keine sichbare verlangsamung. Wenn ich aber in den Taskmanager von Windows gehe, habe ich auch hier eine CPU Auslast von 100%.

Jedoch ist mir nun aufgefallen, das ich selbst für eine Schleife, die praktisch gar nichts tut eine CPU-Auslast von 100% bekomme.

Jetzt meine Frage, muss ich zwangsläufig für Schleifen Timer benutzen, damit sie nicht alle Resourcen nehmen die da sind. Oder brauche ich schlicht und ergreifend einen schnelleren Rechner:

Pentium 4 mit 2,66Ghz
1 GB Ram


ciao & Danke

amin

PS: File ist für LabVIEW 8.6

:Lv86_img


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - TSC - 16.03.2009 14:43

Wenn du eine Schleife ohne Timer verwendest, will LabVIEW sie so schnell wie möglich durchlaufen. Dazu verwendet es sämtlichen zur verfügung stehende Rechenkapazität. Ein schnellerer Rechner würde nur dazu führen, dass du mehr Schleifendurchläufe pro Zeiteinheit schaffst. Die CPU bleibt ausgelastet.

LG
Torsten


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - kpa - 16.03.2009 14:44

Hallo amin,

Deine While-Schleife braucht eine Zeitverzögerung sonst wird sie, sobald sie fertig ist wieder ausgeführt -- und zwar so schnell Dein Rechner das kann -- und das schnellste was er kann sind 100%.

Grüße

kpa


Anwendung wird nach ca. 130 Schleifenduchläufen langsam - amin - 16.03.2009 15:29

OK super,

danke an Euch Alle. Hab jetzt überall 1ms wartezeit drin und nun läuft´s so wie es soll.

Danke nochmal...

Gruss

amin