Größe von StringList



  • ich habe gerade ein test gemacht.. schreibe mit ner while schlaufe immer 10 zeichen in ein StringList..
    bin gerade ca bei 4Mios Stringe. ohne grenze in sicht.. also sollte reichen für den anfang



  • Da fragt man sich doch, ob es sinnvoll ist, den Speicher so "zuzumüllen"... Was ist wohl bei leuten, die nicht so viel Ram haben?
    Kann man da nicht zu bestimmten Zeitpunkten anfangen Werte auf Platte zu speichern?



  • Vorschlag:

    Werte einlesen, mit Zeitstempel versehen und nur bei Werteänderung in Liste speichern. 1,45*10²³ mal den selben Ψert hintereinander einzulesen und abzuspeichern macht echt keinen Sinn.



  • Also ich weiß nicht, aber wenn ich solche Messwerte erfasse, müssen die im Regelfall auch irgendwann ausgwertet werden. Da bietet es sich an, die Daten gleich in eine Datenbank zu schreiben. Erleichtert die anschließende Auswertung um einiges.



  • Bei großen Mengen von Messwerten ist eine Datenbank aus Performancegründen ungeeignet, es sei den die Werte kommen im Minutentakt. Wenn er pro Sekunde 400 Werte einlesen soll na Prost Malzeit das geht nur in eine lokale binäre Datei oder eine Liste im Ram die später auf Platte oder DB gesaved wird.



  • 'Garantierte' 400 Messwerte pro Sekunde dürfte schon Windows als solches nicht verarbeiten können... Bei mir sind das dann nach 5 Stunden aber auch 7.200.000 Messwerte. Irgendwo hat er sich vertan, entweder nach 5 Min 120.000 Messwerte, oder 400 Messwerte pro Minute statt pro Sekunde.



  • ich habe tatsächlich verrechnet(habe ein 60 mal vergessen)...also ich lese die Werte ja nicht nur ein, sondern visualisiere und speichere Sie auch noch nebenbei.
    Die Daten werden über WLan bereitgestellt. Die Daten verändern sich auch jedesmal.
    Aber das Programm läuft soweit stabil, bis auf eine Exception, wo ich noch net weiss, wo die herkommt ....deshalb mach ich bald mal einen neuen Beitrag, wenn ich selber nix dazu finde.

    mfg
    evilempire81



  • hm, wie gesagt, ich halte Windows schon nicht in der Lage, 400 Messwerte pro Sekunde über Stunden hinweg korrekt zu verarbeiten. Über WLAN schon gleich gar nicht... Aber ich lasse mich gerne eines besseren belehren.

    Aber so rein interessehalber: Was für ein Gerät liefert 400 Messwerte pro Sekunde? Ich komme aus dem Bereich Tempereatur-, Mess- und Regeltechnik. Hier sind 400 Messwerte pro Sekunde utopisch. Es gibt keine Geräte die in einem solch kurzen Messzyklus exakte Daten liefern können.



  • Sunday schrieb:

    die groesse der liste ist an den arbeitsspeicher gekoppelt, maximal passen aber nur MAX_INT / 16 elemente rein.

    Außerdem liegt es am Betriebssystem, wie viel er reinlässt... im Programm nicht, aber wenn er siespeichert... unter Windowssystemen 32Bit und < WinXP sind es z.B. max. 4GB pro Datei... also mehr als 4 GB kann er in keine Datei speichern, außer er hat XP, ich glaub da sind es 16GB... k.a. oder aber doch auch nur 4GB... müsste man mal testen.



  • Ich schreibe gerade meine Diplomarbeit bei einer Firma die sich mit Mikroelektronik befasst. Die haben hier einen Sensor der mittels Infrarot Vitalparameter erfasst. Um nun auch am Menschen messen zu können und dabei mobil zu sein, wird die Elektronik des Sensors mit einem PDA verbunden (RS232). Das Programm für den PDA ist schon fertig und funktioniert sehr gut. Die Daten schickt der PDA in 512 Byte grossen Blöcken mittels WLan weg. Der Pc empfängt und visualisiert und speichert die Werte. Zudem wird noch eine Datenbank erstellt, wo sich Benutzerdaten eintragen lassen. Die Werte werden, aber nicht in die Datenbank sondern in jeweils einer Datei.

    Probleme habe ich im Moment noch bei der WLanübertragung. Ich habe die ganz normale Komponente aus BCB6 genommen. Funktioniert soweit ganz gut, bis irgendwann
    der Buffer mehr oder weniger Werte einträgt als er eigentlich haben sollte ( nämlich 512). Ich hab deshalb schonmal ein Beitrag hier ins Forum geschrieben, aber eher erfolglos.

    ->zu der Anzahl in der StringList: Sensor hat 3 Kanäle (pro Sekunde macht ein Kanal 128 Werte * 3Kanäle = 384 (ca. 400))
    Mein "WLanProtokoll" überträgt maximal 512 Byte, das sich aus 46 * 11Byte grossen Einzelpaketen zusammensetzt und ein paar Nullen.
    Das 11Byte Paket besteht aus 2 Synchronbytes und der rest Datenbytes.
    Das heisst also ich schicke 3 Mal pro Sekunde 512 Byte, da 11Byte * 128 Werte etwa eine Sekunde ergibt.

    So genug verraten, aber wenn einer eine Lösung hat, warum auf einmal mehr bzw. machmal weniger als 512 Byte im Puffer bereit stehen kann er Sie gerne posten.

    mfg
    evilempire81


Anmelden zum Antworten