2017-03-27 3 views
0

Also arbeite ich gerade an einem Projekt, wo Protocol Buffers ausgiebig verwendet wird, hauptsächlich als eine Möglichkeit, komplexe Objekte in einer Schlüssel-Wert-Datenbank zu speichern.Protokollpuffer vs flache Puffer

Würde eine Migration auf Flat Buffers einen erheblichen Vorteil in Bezug auf die Leistung bieten?

Gibt es überhaupt einen guten Grund, Protokollpuffer anstelle von Flat Buffer zu verwenden?

Antwort

4

Protokollpuffer sind für den Platzbedarf auf dem Draht optimiert, so dass sie für die Archivierung und Speicherung sehr effizient sind. Die komplexe Codierung ist jedoch teuer zu analysieren, und daher sind sie rechenintensiv, und die C++ - API verwendet dynamisch dynamische Zuordnungen. Flache Puffer sind andererseits für ein effizientes Parsing und eine In-Memory-Repräsentation optimiert (z. B. bieten sie in einigen Fällen eine Nullkopie-Ansicht der Daten an).

Es hängt von Ihrem Anwendungsfall ab, welcher dieser Aspekte für Sie wichtiger ist.

0

Zitiert aus der flatbuffer Seite:

Warum nicht Protocol Buffers verwenden, oder ..?

Protocol Buffers ist in der Tat relativ ähnlich zu FlatBuffers, mit dem primären dass FlatBuffers wobei Unterschied braucht keine Parsing/ Auspacken Schritt zu einer sekundären Darstellung vor Daten, oft in Verbindung mit pro-Objekt-Speicher zugreifen kann, Zuweisung. Der Code ist auch eine Größenordnung größer. Protocol Buffers hat weder einen optionalen Text Import/Export noch Schemafunktionen wie Unionen.