Binärer Parser oder Serialisierung?

8

Ich möchte ein Diagramm mit verschiedenen Objekten für ein Spiel speichern. Ihre Klassen können miteinander verwandt sein oder nicht, sie können Vektoren einfacher Strukturen enthalten oder nicht.

  • Ich möchte die Analyse schnell durchführen, die Daten können ziemlich groß sein.
  • Das Hinzufügen neuer Dinge sollte nicht schwierig sein und sollte die Rückwärtskompatibilität nicht beeinträchtigen.
  • Kleinere Dateigröße ist wichtig
  • Lesbarkeit zählt

Mit Serialisierung meine ich, dass Objekte sich selbst serialisieren, was effektiv ist, aber ich muss verschiedene Serialisierungsmethoden für verschiedene Objekte dafür schreiben.

Mit binary analysing / composing meine ich, eine neue Struktur von Parsern / Komponisten zu erstellen, die Daten für diese Objekte halten und lesen, und diese herumreichen, damit meine Objekte ihre Daten pushen / ziehen.

Ich kann auch json verwenden, aber es kann ziemlich langsam zum Lesen sein, und es ist nicht sehr effektiv, wenn es um ziemlich große Mengen von Matrizen und Zahlen geht.

    
M. Utku ALTINKAYA 25.08.2010, 23:03
quelle

3 Antworten

3

Punkt für Punkt:

  • Fast Parsing: binär (da Sie nicht unbedingt "parsen" müssen, können Sie es einfach deserialisieren)
  • Neue Dinge hinzufügen: Text
  • Kleiner: Text (selbst wenn gezippter Text größer als binär ist, wird er nicht viel größer sein).
  • Lesbarkeit: Text

Das sind also drei Stimmen für Text, ein Punkt für Binär. Persönlich würde ich mit Text für alles außer Bilder gehen (und andere Daten, die "natürlich" binär sind). Dann speicher alles in einer großen Zip-Datei (ich kann mir vorstellen, dass mehrere Spiele dies oder etwas ähnliches tun).

Gute liest: Die Bedeutung von Text und Einfacher Text .

    
Seth 25.08.2010, 23:29
quelle
1

Überprüfen Sie Protokollpuffer von Google oder von Apache. Obwohl es sich um eine einfache Möglichkeit zum Schreiben von Drahtprotokollen handelt, handelt es sich im Grunde um einen Objektserialisierungsmechanismus, der Bindungen in Dutzenden von Sprachen erstellen, eine effiziente Binärdarstellung, einfache Versionierung, schnelle Leistung und eine gute Unterstützung bietet.

    
samkass 25.08.2010 23:18
quelle
0

Wir verwenden Boost.Serialization. Ich weiß nicht, wie es neben den Samkass-Angeboten funktioniert.

    
Crazy Eddie 25.08.2010 23:28
quelle