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 

Probleme mit der Rechenzeit



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!

30.04.2009, 13:56
Beitrag #1

Dusky Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Mar 2009

8.2, 8.5 sowie 8.6
2008
de

70193
Deutschland
Probleme mit der Rechenzeit
Hallo liebe LabVIEWerWink
ich habe ein kleines problem, welches aber riesen folgen mit sich bringt.
Mein vi bekommt ein signal von einer brennkammer (über DAQ) - 4 kanäle mit einer frequenzbreite (x-achse) von etwa 7000 - und ich möchte die werte weiter verarbeiten. Nach gut 4 monaten arbeit ist mein programm endlich fertig und läuft einwandfrei...auf meinem eigenen rechner. Dummerweise ist das einer der besten, die es auf dem mark gibt, was ich nicht bedacht habe-.- Zurück beim dlr will ich mein vi nun auf den rechnern installen und muss feststellen, dass diese absolut überfordert sind.
Ich kann das vi hier leider nicht veröffentlichen, aber als kurzen einblick: Über 30 anzuzeigende graphen, 4 verschiedene glättungsmethoden, es gibt 2 verschiedene peak-finder, außerdem werden alle 2 min. 4x7000werte (2x X-werte, 2x Y-werte) gespeichert (Gesamtgröße mit SubVis ~20Mb).
ich habe mal eine uhr laufen lassen, diese stand nach 5,00 min. gerade mal bei 3:22. Nun habe ich versucht einige graphen zu deaktivieren und nicht berechnen zu lassen solange der Tab auf dem sie liegen nicht selektiert ist - dadurch hab ich aber lediglich eine erhöhung der rechenzeit erreicht (3:02) und nicht eine verrinderung.

Was habt ihr für gute ideen zur verringerung der rechenzeit..ich denke da vor allem an die wahl der schleifen (derzeit hab ich 2 parallel laufende WHILE , in denen eine menge CASE und SEQUENZ laufen), ist es besser alles auf eine WHILE zu kürzen und die unterschleifen in andere schleifen arten zu wandeln? Wenn ja, welche schleifen laufen besser?

Wäre super, wenn ihr ein paar tipps für mich hättet,
liebe grüße, Dusky
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.04.2009, 14:22
Beitrag #2

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Probleme mit der Rechenzeit
Hallo Dusky,

solche Probleme kenne ich von einigen Prüfständen, die ich "geerbt" habe. Bis jetzt war immer die Art und Weise schuld, in der der Programmierer ein Problem gelöst hatte. Polling, viele Kopien von Arrays anlegen etc.

Wie oft aktualisierst die Anzeigeelemente deines Frontpanels? Werden irgendwelche Funktionen unnötigerweise in jedem Schleifendurch ausgeführt? Ich denke da an "Start Task" und ähnliches. Wie schauts mit polling aus? Wie sieht die Speicherauslastung aus?

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 14:37
Beitrag #3

Dusky Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Mar 2009

8.2, 8.5 sowie 8.6
2008
de

70193
Deutschland
Probleme mit der Rechenzeit
danke für dir schnelle antwort!

- also unnötige arrays schließe ich aus, die hab ich schon aufs minimale gekürzt, das war auch meine erste vermutung.

- wegen der aktualisierung...hm ich hab mittlerweile mein timing von 10milli sek auf 100 ehöht. Das brachte mich auf 3:55, is n guter anfang, danke

- speicherauslasung - laut task manager 81-95%

- "polling" das musst ich erstmal googlen^^ wenn ichs richtig vertehe dann ist damit die samplingrate gemeint, oder? Ich muss leider mit einer samplingrate von 10.000 arbeiten, die samples per second haben den selben hohen wert - nicht änderbar!


--> wie wirkt siche denn eine hohe nutzung der glob var aus?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 14:46 (Dieser Beitrag wurde zuletzt bearbeitet: 30.04.2009 14:47 von jg.)
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Probleme mit der Rechenzeit
' schrieb:- speicherauslasung - laut task manager 81-95%
Speicherauslastung in % und nicht in MB???
Oder hast du jetzt nach CPU-Auslastung geschaut. Wobei 95% ein absoluter Wahnsinn sind...
Und bei Speicherauslastung meinste schrotti wohl eher, ob dein Progamm dauernd neuen Speicher alloziert?!
' schrieb:- "polling" das musst ich erstmal googlen^^ wenn ichs richtig vertehe dann ist damit die samplingrate gemeint, oder?
"Polling": Fragst du dauernd irgendwelche Aktivitäten ab, liest dauernd irgendwelche Variablen aus, um auf etwas zu reagieren, anstatt wenn möglich auf Events zu setzen?
' schrieb:Ich muss leider mit einer samplingrate von 10.000 arbeiten, die samples per second haben den selben hohen wert - nicht änderbar!
--> wie wirkt siche denn eine hohe nutzung der glob var aus?
Kann übel daneben gehen, vor allem wenn du Globale Variable zum Array-Austausch verwendest.
In globale Variablen gehören aus meiner Sicht allerhöchstens programmweite einfache Konfigurations-Parameter, die nach Möglichkeit auch nur einmal zu Start des Programms gesetzt werden.

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
30.04.2009, 15:03
Beitrag #5

Dusky Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Mar 2009

8.2, 8.5 sowie 8.6
2008
de

70193
Deutschland
Probleme mit der Rechenzeit
Huhu,

ja sorry, ich hab die % der cpu auslasung angegeben! was den speicher angeht: 600/1000mb scheint aber unabhängig davon zu sein, obs prog läuft oder nicht

zum polling: Ich denke da bin ich recht aktiv, aber sowas lässt sich ja auch schwer vermeiden. ich habe schon einige sachen neu formuliert: zb "x werte anhand der samplingrate berechen" so geschrieben, dass dies nur ausgeführt wird, wenn eine wertänderung bei "samplingrate" stattfindet. funktioniert gut, allerdings nicht beim start des programms, obwohl ich eigentlich beim start den wert automatisch einmal +/-1 schwanken lasse um die wertänderung für die ereignisstruktur hervorzurufen...

zu den variablen: wenn ich dich richtig verstehe, ists besser wenn ich lokal vars nutzte, ja?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 15:04
Beitrag #6

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Probleme mit der Rechenzeit
' schrieb:Speicherauslastung in % und nicht in MB???
Oder hast du jetzt nach CPU-Auslastung geschaut. Wobei 95% ein absoluter Wahnsinn sind...

also ich komme mit einer ungebremsten schleife die nur einen zufallswert anzeigt schon von meinen üblichen 3% auslastung hoch auf über 60%!

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.04.2009, 15:09
Beitrag #7

Dusky Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: Mar 2009

8.2, 8.5 sowie 8.6
2008
de

70193
Deutschland
Probleme mit der Rechenzeit
tschac, wenn du gerade versucht mich aufzubauen, is das der falsche ansatzt!Wink

außerdem ist ne WHILE ohne timer auch nich die regel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 15:19
Beitrag #8

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Probleme mit der Rechenzeit
keine angst, wollte dich nciht aufbauen. war nur so ein gedankengang um "Jens G"s beitrag nachzuvollziehen (dass so ne hohe auslastung extrem wäre).

in meinen projekten verwende ich kaum zeitgesteuerte strukturen. meine schleifen werden in der regel durch funktionen wie "warte auf melder" oder soetwas pausiert und irgendwann eben gestartet. auch eventstrukturen reduzieren die cpu auslastung enorm. Aber ich weiß auch gar nciht so genau ob das hier in die diskussion so rein gehört. kenne mich da nciht so genau aus.

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 15:52
Beitrag #9

oenk Offline
LVF-Stammgast
***


Beiträge: 361
Registriert seit: May 2005

>= 7.1
2004
EN

3018
Schweiz
Probleme mit der Rechenzeit
' schrieb:zu den variablen: wenn ich dich richtig verstehe, ists besser wenn ich lokal vars nutzte, ja?

Für grosse Datenmengen (deine Arrays sind aller Wahrscheinlichkeit als gross anzusehen) eignen sich weder globale noch lokale Variablen. Sie beinhalten immer eine Kopie der Daten. Mach es mit dem Datenfluss, das ist in diesem Fall am Resourcensparendsten.


zu globalen Variablen gibt es hier eine recht gute Diskussion wann und wie sie verwendet werden können.

In theory, there is no difference between theory and practice; In practice, there is.

Chuck Reid
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2009, 16:01
Beitrag #10

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Probleme mit der Rechenzeit
' schrieb:ja sorry, ich hab die % der cpu auslasung angegeben!
Also 80% CPU-Auslastung durch das LV-Programm? Das ist um mindestens 60% zu viel. Die Leerlaufauslastung kann bei 80% (besser 95%) liegen. Das ist dann gut.

Zitat:was den speicher angeht: 600/1000mb scheint aber unabhängig davon zu sein, obs prog läuft oder nicht
Gesamtspeicherauslastung von 1GB? Und wieviel Speicher verbraucht das LV-Programm.


Was sich bei mir immer als Zeitfresser herausstellt, ist folgendes:
Dauerndes (z.B. in While-Schleife für Schieberegister) "Array erstellen". Im Allgemeinen solche Array-Funktionen, die die Array-Größe ändern. Abhilfe "In Array ersetzen"
Refresh am Frontpanel. 250ms sich ausreichend.
Ausgabe an Graphen. Je nach Kompexität kann das Darstellen im Graphen schon mal 500 ms dauern.
While-Schleifen, auch solche die pollen, hab ich mit 50ms laufen.

Unkritisch scheint mir zu sein:
While-Schleifen zum Abfragen von Bedienelementen sind zwar unkritisch. Ich hab sie aber mittlerweile alle durch Event-Cases ersetzt.
Ich hab so um die 10 parallele SubVIs laufen. Alle in 50ms zum DAQmx-Samplen. Ich kann nichts negatives feststellen.
Auch bei jeder Menge Queues und Melder hab ich keine Nachteile festellen können.

Noch ein Wort zu den Globalen Variablen:
GV an sich, finde ich, sind sehr schön. Nur nicht in LV. Daher: FGV. Damit sind die Daten global vorhanden, aber eben nicht im Format einer GV, sondern im Format eines SubVIs, das in den Datenfluß eingebunden werden kann.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Gehe zu: