如何减少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_SIZELITE_RUNTIME

CODE_SIZE 选项实现与默认 API 相同的 API,但库大小更小。但是,LITE_RUNTIME 实现了完整库的一个子集。它不支持描述符或反射。区别在这里给出:https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#message

【讨论】:

以上是关于如何减少protobuf生成的代码?的主要内容,如果未能解决你的问题,请参考以下文章

尴尬的事情又发生Newtonsoft.Json vs Protobuf.net

尴尬的事情又发生Newtonsoft.Json vs Protobuf.net

基于nginx实现protobuf RPC

服务器更改时如何为客户端更新 protobuf 文件

如何继承protobuf生成的C++类

protobuf优缺点