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?
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.
Ich schlage vor, dass Sie protobuf - Protokollpuffer nachsehen, wenn die Leistung ein Problem darstellt.
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:
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.
Tags und Links c++ boost-serialization