15.12.2016, 17:01
Beitrag #1
|
|
|
15.12.2016, 17:28
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Speicherverwendung --> immer kopieren
Vielleicht hilft die englische Hilfe weiter:
Zitat:Places the value of Input into a new memory location and returns the value in Output. Use this function to control the outcome of the LabVIEW compiler buffer allocation process.
Use this function when you want to control the LabVIEW compiler in order to produce a different result regarding its buffer allocations.
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.
|
|
|
15.12.2016, 17:40
Beitrag #3
|
|
|
16.12.2016, 09:14
Beitrag #4
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Speicherverwendung --> immer kopieren
Hallo Marko,
Zitat:Aber wann bzw. warum sollte für mich innerhalb der Laufzeit einer Exe dieser Wunsch aufkeimen?
Beispiele:
- wenn der LabVIEW-Compiler "komische" Resultate liefert, die sich durch Einsatz dieser Funktion korrigieren lassen (es gibt da so einige Beispiele im NI-Forum)
- wenn du mit DVRs arbeiten willst und eine explizite Datenkopie benötigst
|
|
|
16.12.2016, 11:00
Beitrag #5
|
|
|
16.12.2016, 11:42
Beitrag #6
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Speicherverwendung --> immer kopieren
Hallo Marko,
Zitat:Wenn ich eine Queue mit 100MB beschreibe, steigt der Arbeitsspeicher, den meine EXE benötigt gemäß TaskManager entsprechend an. Wenn ich diese Queue wieder leere, bleibt der Speicherbedarf der Exe aber erhalten.
Das ist der LabVIEW-interne Memorymanager: angeforderter Speicher wird nicht sofort wieder freigegeben, sondern bleibt für mögliche Weiterbenutzung weiterhin verwaltet.
Stört das bei deiner Anwendung irgendwie?
Zitat:Gibt es da eine Möglichkeit?
Spiel mal mit RequestDeallocation herum. Ist aber nur als Wunsch an den Speichermanager zu verstehen, nicht als absoluter Befehl!
Und dein Programm kann damit auch langsamer werden, da der Speichermanager bei Bedarf erneut wieder Speicher vom OS anfragen muss…
|
|
|
16.12.2016, 12:22
Beitrag #7
|
Trinitatis
LVF-Guru
Beiträge: 1.694
Registriert seit: May 2008
7.1 / 8.0 /2014-1, 18
2002
DE
18055
Deutschland
|
RE: Speicherverwendung --> immer kopieren
(16.12.2016 11:42 )GerdW schrieb: Stört das bei deiner Anwendung irgendwie?
Hallo Gerd,
ich sammle von 4 Kameras gleichzeitig Bilddaten ein, die ich verarbeiten und darstellen muss. Da hat sich der Speicher unlängst etwas zugeschaufelt. Ist allerdings auch noch mit 2D-Arrays programmiert, die ja bei jeder Übergabe an ein SubVI eine Kopie erstellen. Das werde ich eh noch auf Datenwertreferenzen umbauen. Aber wenn sich das ganze nun bis an die Memory-Grenze hochschaukelt, dann weiß ich nicht so recht, ob es da nicht Probleme geben kann, auch wenn der Speicher schon garnicht mehr benötigt wird.
Die Funktion RequestDeallocation habe ich schon mehrfach benutzt, habe aber noch nie irgendwelche Auswirkungen am Speicher beobachten können. Ich glaub, da ist nur ne LED drinnen, die das Flag anzeigt
Aber trotzdem danke erstmal!
Gruß, Marko
|
|
|
16.12.2016, 12:54
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Speicherverwendung --> immer kopieren
(16.12.2016 12:22 )Trinitatis schrieb: Ist allerdings auch noch mit 2D-Arrays programmiert, die ja bei jeder Übergabe an ein SubVI eine Kopie erstellen.
Offiziell wird immer eine Kopie angelegt, aus Erfahrung muss ich sagen, bei geschickter Programmierung: Nein! Wenn du das 2D-Array nur als Draht in ein SubVI hineinführst, intern verarbeitest und dann wieder als Ausgang bereitstellst, den du dann im Aufrufer weiterverwendest, dann wird nicht zwingend eine Datenkopie angelegt.
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.
|
|
|
16.12.2016, 12:58
Beitrag #9
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Speicherverwendung --> immer kopieren
Und dann gibt's ja immer noch die Einstellung "subroutine" für ein subVI…
|
|
|
| |