协议缓冲区(Protocol Buffer)轻量版与常规版的区别

49
我一直在研究具有小占用空间和良好性能的c++序列化框架。我找到了这个线程c++网络序列化,它基本上建议使用protocol buffers的精简版。从此页面中不清楚精简版具有哪些特定功能。我的问题是:坚持使用protocol buffers lite会失去哪些功能?
1个回答

53

"Lite"版本无法序列化到或从iostream, 或"FileDescriptor",它不能使用Reflection功能(尽管它确实使用了反射),还有其他一些零散的功能。

我的建议是在遇到需要完整版才有的功能之前,只使用lite版本。非常容易从一个版本切换到另一个版本。

如果您需要查看lite版本缺少的列表,我建议浏览<google/protobuf/message.h>。基本上,该包含文件中的所有内容都是完整版本的独有功能。(<google/protobuf/message_lite.h>从完整版中导入)。 这是一个链接: https://github.com/google/protobuf/blob/master/src/google/protobuf/message.h


3
如果你使用轻量级版本,请不要忘记在.proto文件中加入option optimize_for = LITE_RUNTIME;。请注意保持原意并尽量简洁易懂。 - rustyx
49
阅读上面的评论是一种情绪过山车。 - coredump
编辑以反映class MessageLite中现有的SerializeToOstream()方法。 - Geezer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接