50

I've been investigating c++ serialization frameworks will small footprint and good performance. I've found this thread

c++ network serialization

which basically suggest to use the lite version of protocol buffers. It is not clear from this page what are the specific features of the lite version

my question is; what features do you lose when sticking to protocol buffers lite?

1 Answer 1

54

The "lite" version is not able to serialize to or from iostream, or "FileDescriptor", and it cannot use the Reflection feature (although it does use refection), and... a scattering of other features.

My advice is to just use the lite version until you come across a feature that requires the full version. It is very easy to switch from one to the other.

If you need to see a list of what the lite version lacks, I recommend browsing <google/protobuf/message.h>. Basically everything in that include file is exclusive to the full version. (<google/protobuf/message_lite.h> is #included from the full version.) Here's a link: https://github.com/google/protobuf/blob/master/src/google/protobuf/message.h

Sign up to request clarification or add additional context in comments.

4 Comments

Don't forget to add option optimize_for = LITE_RUNTIME; to your .proto files if you use the lite version.
Reading above comments is an emotional roller coaster.
Edited to reflect existence (at present) of SerializeToOstream() in class MessageLite
The Lite version does not support the protobuf text format (since it seems to require reflection as well).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.