Boost Serialisierungsleistung: Text vs. Binärformat

8

Sollte ich die binäre Serialisierung über ASCII / Text-Serialisierung bevorzugen, wenn Leistung ein Problem ist?

Hat jemand es auf einer großen Datenmenge getestet?

    
Konstantin 29.06.2009, 12:34
quelle

3 Antworten

13

Ich habe boost.serialization verwendet, um Matrizen und Vektoren zu speichern, die die Lookup-Tabellen und darstellen Einige Metadaten (Strings) mit einer Speichergröße von ca. 200MByte. IIRC zum Laden von Festplatte in den Speicher dauerte 3 Minuten für das Textarchiv gegenüber 4 Sekunden mit dem Binärarchiv auf WinXP.

    
Maik Beckmann 29.06.2009, 13:36
quelle
1

Ich schlage vor, dass Sie protobuf - Protokollpuffer nachsehen, wenn die Leistung ein Problem darstellt.

"Protokollpuffer" von .Net

    
jitter 29.06.2009 12:38
quelle
1

Benchmarked für ein Problem beim Laden einer großen Klasse, die viele (tausende) verschachtelte archivierte Klassen enthält.

Um das Format zu ändern, verwenden Sie Archivströme

%Vor%

statt

%Vor%

Der Code zum Laden des (binären) Archivs sieht folgendermaßen aus:

%Vor%

Die Dateien und Walltimes für einen optimierten gcc-Build des obigen Code-Snippets sind:

  • ascii: 820 MB (100%), 32.2 Sekunden (100%).
  • binary: 620MB (76%), 14,7 Sekunden (46%).

Dies ist von einem Solid-State-Laufwerk, ohne jegliche Stream-Komprimierung.

Der Geschwindigkeitsgewinn ist also größer als die Dateigröße vermuten lässt, und Sie erhalten einen zusätzlichen Bonus mit Binärcode.

    
mirams 11.04.2014 16:39
quelle

Tags und Links