Soll ich binäre Serialisierung über ascii/Text Serialisierung bevorzugen, wenn die Leistung ein Problem ist?Boost-Serialisierung Leistung: Text vs. Binärformat
Hat jemand getestet es auf eine große Menge von Daten?
Soll ich binäre Serialisierung über ascii/Text Serialisierung bevorzugen, wenn die Leistung ein Problem ist?Boost-Serialisierung Leistung: Text vs. Binärformat
Hat jemand getestet es auf eine große Menge von Daten?
I verwendet Boost.Serialization Matrizen und Vektoren Tabellen darstellen Lookup zu speichern und einige Meta-Daten (Strings) mit einem in Speichergröße von ungefähr 200MByte. IIRC zum Laden von Diskette in den Speicher dauerte 3 Minuten für das Textarchiv vs. 4 Sekunden mit dem Binärarchiv auf WinXP.
3 Minuten klingt ... unerklärlich langsam. Das waren keine POD-Typen :) – sehe
Ich schlage vor, Sie schauen in protobuf - Protocol Buffers wenn die Leistung ist ein Problem
gebenchmarkt es für ein Problem im Zusammenhang mit einer großen Klasse Laden enthält viele (in Tausend) von verschachtelten archivierten Klassen.
das Format zu ändern, ströme Verwendung Archiv
boost::archive::binary_oarchive
boost::archive::binary_iarchive
statt
boost::archive::text_oarchive
boost::archive::text_iarchive
Der Code des (binär) Archiv für das Laden wie folgt aussieht:
std::ifstream ifs("filename", std::ios::binary);
boost::archive::binary_iarchive input_archive(ifs);
Class* p_object;
input_archive >> p_object;
die Dateien und walltimes für einen optimierten gcc-Build des obigen Code-Snippets sind:
Dies ist von einem Solid-State-Laufwerk, ohne Stream-Komprimierung.
So ist der Geschwindigkeitsgewinn ist größer als die Dateigröße würde vorschlagen, und Sie erhalten einen zusätzlichen Bonus binary verwenden.
Interessantes Thema. Lesen Sie hierzu: http://stackoverflow.com/questions/4558382/boostserialization-high-memory-consumption-uring-serialization –