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 

Elegantere Datenbufferung?



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!

18.08.2005, 11:24
Beitrag #1

M. Vöcking Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: May 2005

8.60
2005
de

36266
Deutschland
Elegantere Datenbufferung?
Hallo,

ich habe bisher zur Bufferung meiner von einer analogen Inputkarte kommenden Messdaten während des Messprozesses folgendes Prinzip verwendet (siehe angehängtes VI).

Von diesem bin ich allerdings aus zwei Gründen nicht sehr überzeugt:

1. Die CPU geht (vergl. Task-Manager) nach kurzer Zeit auf 100%

2. Die Auslagerungsdatei steigt pro Sample um ca. 12,5 Byte, obwohl bei einer Auflösung von 32 Bit nur 4 Byte nötig währen.

Jetzt frage ich mich, welche Methode geeigneter ist, die Datenpackete weniger CPU-und RAM-belastender aneinander zu heften. Außerdem verstehe ich nicht, weshalb bei diesem Verfahren soviel RAM geschluckt wird.

Für Antworten bzw. bessere Alternativen währe ich dankbar.

Gruß,
Michael


Angehängte Datei(en)
Sonstige .vi  Datanbuffer.vi (Größe: 42,14 KB / Downloads: 235)
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2005, 14:56
Beitrag #2

Michael Jani Offline
LVF-Neueinsteiger


Beiträge: 9
Registriert seit: Aug 2005



kA



Elegantere Datenbufferung?
Hi!

Warum im RAM mehr Platz verbraucht wird als nötig kann ich dir auch nicht sagen zumal SGM mit einem Float vergleichbar ist und 16Bit hat.

Mehr als 64MB würde ich auch nicht über das Schieberegister jagen, denn bei 128MB streikt es. Ein Array kann auch nur mit dem positiven Teil eines 32Bit Integers initialisiert werden und ist wohl daher auch auf 2147483647 Werte beschränkt. Jedoch konnte ich es auch nicht auf diese Größe initialisieren....

Ich würde statt dem Array eine Message Queue nehme. In diese in einer Schleife die Werte einlesen und in einer anderen Schleife die Werte verarbeiten (dazu kannst du die Queue komplett leeren). Zur Synchonisation bieten sich Semaphoren an (reader writer Problem)

Es kommt sehr drauf an was du mit den Daten machen möchtest und ob du dieses stets alle im Speicher brauchst.


Was jedoch bei dir CPU frisst ist die Anzeige ALLER Werte. Ich habe das mal auf 30000 reduziert. Was auch noch deutlich Performance raubt ist das dynamische Anfordern von Speicher, daher habe ich das Array schon initialisiert und fülle es lediglich nur noch.

Gruss Michael


Angehängte Datei(en)
Sonstige .vi  Datanbuffer.vi (Größe: 59,54 KB / Downloads: 246)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2005, 23:03
Beitrag #3

M. Vöcking Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: May 2005

8.60
2005
de

36266
Deutschland
Elegantere Datenbufferung?
Aha - nicht schlecht!

Deine Lösung gefällt mir in der Tat wesentlich besser. Vielen Dank!

Gruß
Michael
Webseite des Benutzers besuchen 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
  Elegantere Verbrauchsberechnung einer Wasseruhr? Blondchen 3 3.312 28.06.2019 08:58
Letzter Beitrag: Blondchen

Gehe zu: