如何对 protobuf-lite编程,c++ android
答案:1 悬赏:50 手机版
解决时间 2021-02-19 22:57
- 提问者网友:棒棒糖
- 2021-02-19 15:07
如何对 protobuf-lite编程,c++ android
最佳答案
- 五星知识达人网友:患得患失的劫
- 2021-02-19 16:44
protocol buffer编译器生成 Foo 类,公开地(publicly)派生自 google::protobuf::Message。Foo类是一个实体类;禁止遗留下纯虚的方法没有被实现。除了 Message 中的虚方法之外,非纯虚的方法可以由 Foo 类重载也可以不重载,取决于优化模式。缺省,为了最高的速度, Foo 实现特定protocol buffer版本的所有方法。不管怎样,如果 .proto 文件包含下列行:
1 option optimize_for = CODE_SIZE;
Foo 将仅重载运行必需的最小方法集合,和依赖于基于反射实现的剩余部分。这意味着减小了生成代码的大小,但也减小了性能。或者,如果 .proto 文件包含:
1 option optimize_for = LITE_RUNTIME;
Foo 将包含所有方法的快速实现(fast implementations),但是是实现 google::protobuf::MessageLite 接口,仅包含 Message 中所有方法的一个子集。尤其,它不支持描述符(descriptors)或反射。不管怎样,以这种方式生成的代码只需要连接 libprotobuf-lite.so (Windows上是 libprotobuf-lite.lib) 而不是 libprotobuf.so(libprotobuf.lib)。"lite"库比 "full"库(完整的库)要小很多,更适用于资源受限的系统,比如手机。
你不应该创建 Foo 的子类。如果你子类化 Foo ,并且重载虚方法,重载可能被忽略,就像很多生成的方法为了提高性能被去虚拟化(de-virtualized)。
1 option optimize_for = CODE_SIZE;
Foo 将仅重载运行必需的最小方法集合,和依赖于基于反射实现的剩余部分。这意味着减小了生成代码的大小,但也减小了性能。或者,如果 .proto 文件包含:
1 option optimize_for = LITE_RUNTIME;
Foo 将包含所有方法的快速实现(fast implementations),但是是实现 google::protobuf::MessageLite 接口,仅包含 Message 中所有方法的一个子集。尤其,它不支持描述符(descriptors)或反射。不管怎样,以这种方式生成的代码只需要连接 libprotobuf-lite.so (Windows上是 libprotobuf-lite.lib) 而不是 libprotobuf.so(libprotobuf.lib)。"lite"库比 "full"库(完整的库)要小很多,更适用于资源受限的系统,比如手机。
你不应该创建 Foo 的子类。如果你子类化 Foo ,并且重载虚方法,重载可能被忽略,就像很多生成的方法为了提高性能被去虚拟化(de-virtualized)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯