C++ Objekte intern komprimieren (nicht als Datei)

ali7566

Lieutenant
Registriert
Feb. 2007
Beiträge
980
Hallo,

aktuell arbeite ich an einem verteilten System, bei dem über einen TCP-Socket Daten ausgetauscht werden. Um den Traffic zu reduzieren möchte ich Objekte gewisser Klassen komprimieren. Diese sollen jedoch nicht als Datei ausgelagert werden, sondern nur intern komprimiert werden. Das komprimierte Objekt wird dann der zu versendenden Botschaft angehängt.

Die Beispiele die ich bis jetzt gefunden habe beziehen sich hauptsächlich Daten extern als Dateien zu komprimieren. Genau das möchte ich jedoch nicht!

Kennt sich hier jemand näher aus?

Gruß Ali.
 
Ja genau wie Ripper schreibt
zum "Objekte serialisieren" benutzt man oft Boost Serialization.
Hier hast du die Wahl in welchem Format die Daten vorliegen sollen: Lesbarer Text, XML oder auch binär (was wohl am kleinsten ist). Dies kannst du dann anschließend wie der Link zeigt nochmal 'in-memory' komprimieren falls du das möchtest. Komprimierung kostet aber oft viel RAM und auch CPU Last - da muss man dann abwägen was knapper ist: Bandbreite oder RAM oder CPU. Gerade die gewählte Komprimierungs-Stufe hat einen massiven Einfluss auf den Ram-Verbrauch. Das sieht man auch, wenn man aufm Desktop mit 7Zip eine Datei kompromieren will und im Menü verschiedene Komprimierungsstufen durchprobiert. Um ca 150MB zu komprimieren können auch mehr als 2GB Ram notwendig sein wenn man 'Ultra' wählt was kaum mehr bringt als niedrigere Komprimierungen.
 
ali7566 schrieb:
Die Beispiele die ich bis jetzt gefunden habe beziehen sich hauptsächlich Daten extern als Dateien zu komprimieren. Genau das möchte ich jedoch nicht!
Komisch.
Wenn ich beispielsweise nach C++ compress data sending over net bekomme ich unzählige hilfreiche Links.



ali7566 schrieb:
Kennt sich hier jemand näher aus?
Mit Suchmaschinen? Offenbar schon.
 
Zurück
Oben