Format Exploration » History » Version 5
« Previous -
Version 5/12
(diff) -
Next » -
Current version
J. Moringen, 06/20/2011 06:52 PM
extended comparison
Format Exploration¶
Currently, we use the Google Protocol Buffer library and its message definition format for serializing objects at the framework level. The user may use it for its own datatypes, but is not forced to do so by RSB. However, several alternatives exist which we may additionally evaluate. Afterwards, we could promote (at least internally) the use of one of the alternatives or stick to protobuf.
Serialization Formats and Libraries¶
- Protocol Buffers: http://code.google.com/p/protobuf/
- MessagePack: http://msgpack.org/
- ROS Wire format: http://www.ros.org (TODO link to specs?)
- LCMs wire format (TODO link to specs?)
- JSON
- Binary JSON: http://bsonspec.org/
Informal Comparison¶
An informal comparison...
Structure and Description¶
Aspect | Google Protocol Buffers | LCM | MessagePack |
---|---|---|---|
Fixed set of fundamental types | yes | ? | ? |
Nesting | yes | ? | ? |
Arrays/Sequences | yes | ? | ? |
- Homogeneous | yes | ? | ? |
- Inhomogeneous | no | ? | ? |
Textual IDL | yes, C/Java-like | ? | ? |
Binary IDL | yes, uses Protocol Buffers | ? | ? |
Self-describing messages | yes, optional | not visible in documentation | ? |
Serialization¶
Aspect | Google Protocol Buffers | LCM | MessagePack |
---|---|---|---|
Random Access without Deserialization | no | ? | ? |
Field Access without Deserialization | yes (by skipping) | ? | ? |
Non-Functional¶
Aspect | Google Protocol Buffers | LCM | MessagePack | |||||
---|---|---|---|---|---|---|---|---|
Programming Languages | Java, C++, Python, others community | C, Java, Python, .NET, Matlab | ? | |
Extension without recompile | yes | no by design? | ? |
Speed (Runtime rel. to PBs) | 1 | ? | .25 (claimed) |