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 

Wie Speicherverbrauch minimieren?



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!

15.07.2010, 13:53 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2010 14:01 von Matze.)
Beitrag #1

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie Speicherverbrauch minimieren?
Hallo zusammen,

ich habe folgendes VI, das fortlaufend durchlaufen wird.

   

Ich suche aus mehreren Signalen 2 bestimmte damit heraus.
Der Speicherverbrauch ist laut LabVIEW-Speichermonitor (oder wie sich das nennt) gigantisch. Nach wenigen Sekunden ergibt sich das folgende Bild (Sample-Rate = 1,6 kHz):

   

Was verursacht diesen hohen Speicherverbrauch? Laut Windows-Taskmanager sind es nur wenige MB, wobei man sich auf den nicht verlassen kann.
Die Daten werden doch nach der Ausführung des VIs wieder aus dem Speicher entfernt (= lokale Variablen), dachte ich.

Gibt es irgendwo Tipps/Tutorials, die man bzgl. Speichermanagement oder auch Performance beachten sollte?
Also häufig verwendete Konstrukte (Werte in Array einfügen, Messwerte vearbeiten, ...), evtl. mit Negativ- und Positivbeispiel?

Wenn man z.B. sämtliche Variablen als Referenz übergeben könnte (ohne umständliches "Referenz erstellen" und diese Inline-Elementstruktur etc), wäre mir vielleicht schon geholfen, aber sicher bin ich mir nicht.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.07.2010, 14:03
Beitrag #2

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie Speicherverbrauch minimieren?
In der LV Hilfe gibt es jede Menge zu diesem Thema. Was mir direkt ins Auge gefallen ist, ist der Indicator Kraft-Weg-Signal. Ziehe den mal aus deinem Case heraus (ist sonst noch irgendeine Struktur die auf dem Bild nicht zu sehen ist?). Dadurch vermeidest du eine Kopie des Wertes.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:08
Beitrag #3

RMR Offline
Laborkater
**


Beiträge: 238
Registriert seit: Nov 2008

09f1 - 2010SP1(f4) - 2012SP1f5 - 2014 SP1f10 -2017f3
2009
DE_EN

76437
Deutschland
Wie Speicherverbrauch minimieren?
Hi,

wenn ich es so richtig im Hinterkopf habe, legt LV bei Zugiffen auf ein Array eine Kopie des jeweiligen Arrays an. Somit wird sich das wohl kaum ändern lassen. Wie groß sind denn deine Arrays?

Bin aber sehr gespannt was die Gurus hier von sich geben.

Keep on rockin, RMR

100nF passen immer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:15
Beitrag #4

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie Speicherverbrauch minimieren?
' schrieb:Hi,

wenn ich es so richtig im Hinterkopf habe, legt LV bei Zugiffen auf ein Array eine Kopie des jeweiligen Arrays an. Somit wird sich das wohl kaum ändern lassen. Wie groß sind denn deine Arrays?

Bin aber sehr gespannt was die Gurus hier von sich geben.

Keep on rockin, RMR
Das ist so nicht richtig.
Wenn dein Array Control und dein Array Indicator auf der Blockdiagram Route liegen, wird der Speicher des Aufrufenden VIs mitverwandt. Es wird keine explizite Kopie erstellt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:17
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie Speicherverbrauch minimieren?
Hallo ihr beiden!

@abrissbirne: Stimmt, bei jedem Eingang einer Case-Struktur legt LabVIEW vermutlich eine Kopie der Daten an. Dann ziehe ich sämtliche Daten in die Case-Struktur hinein und lasse nur noch den Fehlereingang draußen.

@RMR: Puh, gute Frage. Es ist ein recht umfangreiches Cluster und das enthält 2 Messreihen, die über paar Sekunden aktuell mit 1,6 kHz gefüllt werden. Das ist aber eher ein Test, um solche Speicherproblemchen zu finden.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:24
Beitrag #6

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie Speicherverbrauch minimieren?
' schrieb:Hallo ihr beiden!

@abrissbirne: Stimmt, bei jedem Eingang einer Case-Struktur legt LabVIEW vermutlich eine Kopie der Daten an. Dann ziehe ich sämtliche Daten in die Case-Struktur hinein und lasse nur noch den Fehlereingang draußen.
Und das ist genau falsch! Du musst alle Controls und Indicators ausßerhalb der Casestruktur auf die Blockdiagram Route legen (siehe vorheriger Post).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
15.07.2010, 14:31
Beitrag #7

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie Speicherverbrauch minimieren?
Die, die ich in der Case-Struktur nicht benötige ja.
Aber auch die, auf die ich innerhalb der case-Struktur zugreifen möchte?

Nehmen wir das folgende VI. Ist hier der untere Weg besser?

   

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:33
Beitrag #8

M Nussbaumer Offline
Zarathustra
****


Beiträge: 654
Registriert seit: Sep 2009

2009 SP1
2009
EN

6300
Schweiz
Wie Speicherverbrauch minimieren?
Ja, nur schon weil du im Fehlerfall den Wert des Eingangs anstatt eines Default-Wertes weitergibst (betrachte ich als VorteilWink)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:40 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2010 14:40 von Matze.)
Beitrag #9

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
Wie Speicherverbrauch minimieren?
Hm ok, dann ziehe ich das in meiner VI-Sammlung mal alles da raus. Unsure

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2010, 14:43
Beitrag #10

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Wie Speicherverbrauch minimieren?
' schrieb:Nehmen wir das folgende VI. Ist hier der untere Weg besser?
[attachment=56615:vi.PNG]
Jup, dadurch wird der Speicher des Aufrufenden VIs verwandt. Wenn du nun Arrayoperationen anwendest machst du es ganauso, nimmst für die Operationen die Inplace Elementstruktur und hast es optimal (Speicherbedarf) gelöst.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Prozessorauslastung minimieren Homer-Jay 6 4.755 05.01.2012 10:15
Letzter Beitrag: GerdW

Gehe zu: