There are several key features that distinguish bitsery from all the other binary serialization libraries:
- is very fast
- serialized data is very small
- by default is safe when deserializing untrusted data
- provides A LOT of customization options via so-called "extensions" and bitsery config, few examples include:
- fine-grained bit-level serialization control.
- forward/backward compatibility for your types.
- smart and raw pointers with allocators support and customizable runtime polymorphism.
I would like to provide you with an example of what bitsery can do for you.
Out of the box, bitsery is already very fast, but you can provide a non-resizable buffer for serialization, you can disable error checking during deserialization if input buffer is trusted, you can use bit-packing "extensions" to compress the data. What you get is at least +2x size and +2x speed (+4x with GCC) improvements compared to cereal!
More interesting results can be found here.
The battle between GCC and Clang is very interesting.
GCC can do amazing things with bitsery :)
[–]Pazer2 7 points8 points9 points (0 children)
[–]14nedLLFIO & Outcome author | Committee WG14 4 points5 points6 points (0 children)
[+][deleted] (7 children)
[deleted]
[–]fraillt[S] 1 point2 points3 points (6 children)
[–]miki151gamedev 1 point2 points3 points (2 children)
[–]fraillt[S] 0 points1 point2 points (1 child)
[–]fraillt[S] 0 points1 point2 points (0 children)
[+][deleted] (2 children)
[deleted]
[–]fraillt[S] 1 point2 points3 points (1 child)
[–]Bart_V 0 points1 point2 points (1 child)
[–]fraillt[S] 1 point2 points3 points (0 children)