Google protobuf解析消息逻辑的版本问题

Posted justinzhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google protobuf解析消息逻辑的版本问题相关的知识,希望对你有一定的参考价值。

    在分析caffe2源码的过程中,由于caffe2使用protobuf作为网络结构和网络参数序列化和反序列化的机制,想在反序列化之前进行加解密处理,这是反向protouf其实有两个版本的实现来进行消息的解析。

    protobuf 中对消息的解析有两个版本,一个是python版本,另外一个是c++版本。python版本相关的代码存放路径在:./python/google/protobuf/internal/python_message.py 中,而c++实现版本存放路径在:./python/google/protobuf/pyext/message.cc ,在python目录下有一个setup.py文件,里面有一个--cpp_implemetation选项,这个选项可以控制使用cpp的实现还是使用python的实现来进行消息的解析(序列化和反序列化),默认这个选项是关闭的,所以如果从源代码安装protobuf,那么就会默认使用python的实现来进行消息的解析,这时会发现解析的性能变慢。如果用pip安装的protobuf来进行消息的解析,默认采用的是cpp的实现,所有会发现效率更高。

clipboard

以上是关于Google protobuf解析消息逻辑的版本问题的主要内容,如果未能解决你的问题,请参考以下文章

google protobuf-js:如何有效地解析我的消息

Google Protobuf简明教程

Google Protobuf简明教程

Protobuf 反序列化异常

不同版本的 google protobuf 可以一起工作吗?

京东技术:Protobuf-3.6.1 安装及 Golang 使用