1. 程式人生 > >Google protobuf解析消息邏輯的版本問題

Google protobuf解析消息邏輯的版本問題

mage logs 有一個 https itl 2-2 -i clip 源代碼

在分析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的實現,所有會發現效率更高。

技術分享圖片

Google protobuf解析消息邏輯的版本問題