如何减少protobuf生成的代码?
Posted
技术标签:
【中文标题】如何减少protobuf生成的代码?【英文标题】:How to reduce the code generated by protobuf? 【发布时间】:2016-02-22 11:21:24 【问题描述】:protobuf 编译器为 .proto 文件中的每个字段生成这么多方法。是否可以使其仅生成(例如:必需的字符串 name=1;) set_name(const char* value) 和 name() only在 C++ 中。
【问题讨论】:
【参考方案1】:抱歉,没有这个选项。
请注意,大多数方法都是内联的。您不使用的内联方法将被编译器删除,并且不会包含在输出二进制文件中。因此,拥有这么多方法的唯一真正问题是它可能会使编译速度变慢。
【讨论】:
【参考方案2】:在您的 .proto 文件中,将 option optimize_for = ***;
设置为 CODE_SIZE
或 LITE_RUNTIME
。
CODE_SIZE
选项实现与默认 API 相同的 API,但库大小更小。但是,LITE_RUNTIME
实现了完整库的一个子集。它不支持描述符或反射。区别在这里给出:https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#message
【讨论】:
以上是关于如何减少protobuf生成的代码?的主要内容,如果未能解决你的问题,请参考以下文章
尴尬的事情又发生Newtonsoft.Json vs Protobuf.net