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 

Dieses Thema hat akzeptierte Lösungen:

Handhabung großer Datenstreams



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!

03.06.2015, 11:04
Beitrag #1

Kiesch Offline
LVF-Stammgast
***


Beiträge: 412
Registriert seit: Mar 2009

2019, 2018, 2016
2009
DE

04519
Deutschland
Handhabung großer Datenstreams
Hi,

bevor ich mich jetzt weiter durch zig Suchseiten wühle, die das nur am Rande behandeln:

Meine Datenquelle ist ein NI Digitizer, der mir als Stream Daten auswerfen soll. Vermutlich wird es darauf hinauslaufen, dass ich die vor einer Weiterverarbeitung erstmal "zwischenspeichern" muss (auf Festplatte, oder eventuell auch per LAN an einen anderen Rechner), da Datenverarbeitung auf dem Messrechner meine erreichbare Samplerate drastisch drückt (und die ist eh schon bei unter einem Fünftel dessen was der Digitizer kann, da die USB Schnittstelle nicht mehr hergibt).

Mein Problem ist daher:

Ich Streame vom Digitizer fortlaufend das Signal auf einem Kanal. Entsprechend erhalte ich jede Sekunde ~8Mb (entsprechend der beim testen maximal stabil erreichbaren Sample Rate von 8M Samples/s) Daten in Paketen von I8 Arrays "unbekannter" Länge (da ich den Buffer des Digitizers immer nach Möglichkeit komplett leere um ein möglichst schnelles Auslesen zu garantieren; vorteilhaft dafür scheint es zu sein möglichst große Pakete zu lesen; die Optimierung läuft anschließend darauf hinaus die Sample Rate so zu wählen, dass der Buffer im Digitizer nicht überläuft; im praktischen Betrieb habe ich dann am Anfang der Messung Arrays konstanter Länge, (da Messung und Daten holen scheints nicht exakt gleichzeitig gestartet werden) und irgendwann den Buffer leer gemacht und dann nur noch Arrays nicht vorhersagbarer Länge. (Meist >100k Werte).

Da das ganze zeitkritisch ist schreibe ich das aktuell wie gesagt einfach stumpf weg. Denke hier kann man auch relativ leicht darauf optimieren keine unnötigen Datenkopien etc. zu erzeugen und das möglichst effizient zu machen.
Das Problem kommt danach: Die Signale müssen anschließend auch noch verarbeitet werden und dazu muss ich das fortlaufende Signal (zumindest stückweise) wieder zusammensetzen und durch verschiedene Filter / Verarbeitungsroutinen jagen. Im besten Fall krieg ich die Datenmenge dadurch auch relativ schnell reduziert (aus den gesamten Datenpunkte interessieren nur Ausschnitte, allerdings müssen die softwareseitig identifiziert werden). Nur muss ich die bis dahin erstmal irgendwie handhaben und sinnvoll im Speicher aufbewahren etc. pp.

Leider (in dem Fall) hat Labview ja Datenfluss, deswegen muss man ja immer aufpassen wenn man kopien vermeiden will. Wie geht man sowas dann am besten an? Daten über eine Queue von A nach B weiterreichen? In dem Zusammenhang: Funktioniert eine Queue als Referenz oder wird in die Queue eine Datenkopie geschrieben?
Im Prinzip denke ich wäre die Queue zumindest organisatorisch die beste Lösung, da die es erlauben sollte sehr schön Datenproduktion und Verarbeitung zu synchronisieren; aber wenn ich da jedes mal kopiere dann dürfte das ja massiv Zeit kosten.

Welche Konzepte sollte man sich vielleicht noch anschauen um sowas möglichst performant (in dem Fall: schnell) zu lösen?

Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Handhabung großer Datenstreams - Kiesch - 03.06.2015 11:04

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  LabView Fehlercluster Handhabung hansi9990 5 4.413 12.10.2016 00:37
Letzter Beitrag: rolfk
  Größer, Kleiner UND Gleich jan_1 10 11.876 07.07.2015 13:57
Letzter Beitrag: Kiesch
  Arbeitsspeicher bei Übergabe großer Cluster ib 2 3.899 07.01.2014 13:47
Letzter Beitrag: ib
  nur einen Wert der größer=0 ist darstellen sonst Fehler ausgeben [Newbie] aas430 4 4.968 10.10.2012 09:00
Letzter Beitrag: jg
  1D Arry nach größer durchsuchen und Index ausgeben Schraqnzy 13 10.050 13.09.2012 11:29
Letzter Beitrag: GerdW
  Wert in Array zwischenspeichern wenn größer/ungleich 0 udcno@AL 10 10.910 18.11.2010 09:20
Letzter Beitrag: M Nussbaumer

Gehe zu: