QDataStream / QBuffer

Alles rund um die Programmierung mit Qt
Antworten
sicker
Beiträge: 4
Registriert: 5. September 2007 19:45

QDataStream / QBuffer

Beitrag von sicker »

Hi,

gibt es eine Möglichkeit dafür zu sorgen das QDataStream in Verbindung mit einem QByteArray nicht ungefähr 20kb Daten allociert? (QByteArray ist leer)
So wie es aussieht muss es etwas mit dem QBuffer zutun haben der für das QByteArray allociert wird.
Liegt der Fehler wie meistens zwischen meinen Ohren oder ist die Klasse einfach etwas bescheiden ?
Wäre sehr dankbar für eine schnell Antwort.

Gruss,

Sicker
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nunja - ein bischen IO-Puffer hier und da und schon sind die 20KB weg. Was ist so schlimm daran?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sicker
Beiträge: 4
Registriert: 5. September 2007 19:45

Beitrag von sicker »

Danke für die schnelle Antwort, stehe leider momentan auf dem Schlauch. Könntest du das etwas näher erläutern?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich habe damit gemeint dass es nicht verwunderlich ist wenn dafür 20KB benötigt werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sicker
Beiträge: 4
Registriert: 5. September 2007 19:45

Beitrag von sicker »

Aha, du willst mir also sagen das man 20kb benötigt um ein Stream interface auch auf ein Array zugreifen zu lassen?
Du solltest das mal den 64kb Democodern vorschlagen, die sind von dieser Antwort sicherlich begeistert.
Mal ganz abgesehen von meinem ungläubigen Staunen sehe ich nicht so ganz inwiefern das nun meine Frage beantwortet...

Gibt es vielleicht jemand der diese Frage sinnvoll beantworten kann bzw. will?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du solltest schon ein Codebeispiel zeigen damit man dann mal sehen kann wer da wie viel Speicher braucht... und mit der Codingszene braucht man mit einem C++ - Programm schon gar nicht anzufangen :roll:

Ich sehe 20KB an der Stelle nicht wirklich als viel an. QDataStream ist, soviel ich weiss, ein buffered stream, also könnten allein der input und der output-buffer schon 20KB locker belegen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sicker
Beiträge: 4
Registriert: 5. September 2007 19:45

Beitrag von sicker »

Soweit ich das sehe ist QDataStream mit QByteArray immer unbuffered.
Mal abgesehen davon halte ich 20kb schon für viel, da ich > 10000 Objekte davon brauche...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Gleichzeitig > 10000 Objekte halte ich für einen Designfehler. Und wie gesagt - ohne Code kann man auch nicht sagen wo der Speicher abgeblieben ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

wofür 10000 Objekte?? :shock:
von einem QDataStream?
also, wenns unbedingt sein muss, dann schreib dir besser selber ne klasse mit standard c++, die nur die funktionen hat, die du brachst und keinen Buffer besitzt. schau dich dafür mal bei codeproject um oder einfach bei google.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Mal abgesehen davon halte ich 20kb schon für viel, da ich > 10000 Objekte davon brauche...
naja, also kann man davon ausgehen, das du entweder immens speicher in deinem System hast (den dein BS und deine runtime auch nutzen kann !!! ) oder deine Daten die du da rein spulst, sind ned wirklich allzugross.

Bei ersterem Fall solltes du eh kein Problem haben, die ca. 200 MB sollt das system ja locker eruebrigen koennen.

fuer den 2. fall halt ich dann einfach streams ned als das richtige mittel zum zweck.

Wie meine Vorredner schon sagten, prinzipiell wird ich das Design noch mal ueberpruefen, und mir genau anschauen, fuer was man streams eigentlich nehmen sollte und wann nicht.

Und wenn ich ich grenzbereiche komme, wo ich weder performance noch SPeicher verschenken darf, wuerd ich mich auch auf keine Biblo verlassen, erst recht ned auf die QT, sondern sogar die Implementationsdetails der stl impl meiden und auf Standard C ebene gehen, natuerlich nur fuer die kritischen bereiche.

Ciao ...
Antworten