Protocol Buffer(Google) 學習筆記一
2008-07-11 10:28
169 查看
Protocol Buffer是 Google 公司針對結構化的數據制定的一個比 XML 傳輸速度更快的一種標記文本格式,
它能使用 Google 已經公布出來的一些源程式及 API 進行快速處理封裝, 并且進行二進制序列化後內容會變得非常少,解封包的速度也非常快.
在應用程序的參數設定/配置 ,簡單數據或者固定格式數據的封裝傳送上,它會比XML方便應用.
當然, 畢竟XML已經成為了多種行業標準的編寫工具, Protocol Buffer 還只是google 公司內部使用的一個比較優秀的數據處理辦法, 在通用性上肯定會有天差地別.
Protocol Buffer 在處理大量未知結構的內容, 或者對指定結構的數據進行 顯示格式化時會比較吃力.
因為我目前致少還沒看到它在這方面提供的功能.下面是一段 Protocol Buffer 對指定結構數據的定義示例:
下面是對上述數據結構進行調用/輸出/序列化 的C++程序示例:
輸入/以字符串導入的C++程序示例:
從上面的例子我們可以看到, Protocol Buffer實際上就是 C++裡面的一個結構型, 所以它的運行速度比起 XML文件會快上非常大的倍數.
因為XML 需要從文件中讀取出字符串,再轉譯成 XML 文檔對象結構模型, 然後再從XML 文檔對象結構模型中讀取出指定節點的字符串, 最後再將這個字符串轉換成指定類型的變量, 這樣繁複的處理, 將大大消耗 CPU 資源.
而Protocol Buffer只需要簡單地將一個二進制序列, 按照指定的格式讀取到 C++ 結構類型中去就行了.
參考鏈接:
http://code.google.com/apis/protocolbuffers/docs/overview.html
它能使用 Google 已經公布出來的一些源程式及 API 進行快速處理封裝, 并且進行二進制序列化後內容會變得非常少,解封包的速度也非常快.
在應用程序的參數設定/配置 ,簡單數據或者固定格式數據的封裝傳送上,它會比XML方便應用.
當然, 畢竟XML已經成為了多種行業標準的編寫工具, Protocol Buffer 還只是google 公司內部使用的一個比較優秀的數據處理辦法, 在通用性上肯定會有天差地別.
Protocol Buffer 在處理大量未知結構的內容, 或者對指定結構的數據進行 顯示格式化時會比較吃力.
因為我目前致少還沒看到它在這方面提供的功能.下面是一段 Protocol Buffer 對指定結構數據的定義示例:
message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; }
下面是對上述數據結構進行調用/輸出/序列化 的C++程序示例:
Person person; person.set_name("John Doe"); person.set_id(1234); person.set_email("jdoe@example.com"); fstream output("myfile", ios::out | ios::binary); person.SerializeToOstream(&output);
輸入/以字符串導入的C++程序示例:
fstream input("myfile", ios::in | ios::binary); Person person; person.ParseFromIstream(&input); cout << "Name: " << person.name() << endl; cout << "E-mail: " << person.email() << endl;
從上面的例子我們可以看到, Protocol Buffer實際上就是 C++裡面的一個結構型, 所以它的運行速度比起 XML文件會快上非常大的倍數.
因為XML 需要從文件中讀取出字符串,再轉譯成 XML 文檔對象結構模型, 然後再從XML 文檔對象結構模型中讀取出指定節點的字符串, 最後再將這個字符串轉換成指定類型的變量, 這樣繁複的處理, 將大大消耗 CPU 資源.
而Protocol Buffer只需要簡單地將一個二進制序列, 按照指定的格式讀取到 C++ 結構類型中去就行了.
參考鏈接:
http://code.google.com/apis/protocolbuffers/docs/overview.html
相关文章推荐
- Google新出品的数据格式:Protocol Buffer
- Google 出品的 Protocol Buffer,别只会用 JSON 和 XML 了
- linq學習筆記1
- 學習struts筆記2——登入示例
- Google protocol buffer程序书写小结
- Qt4 學習筆記[转]
- Gazebo機器人仿真學習探索筆記(一)安裝與使用
- Gazebo機器人仿真學習探索筆記(二)基本使用說明
- Gazebo機器人仿真學習探索筆記(五)環境模型
- 德瑞克:SQL Server 學習筆記
- caffe架构学习之(一)--基于google protocol buffer开源项目的深度网络定义
- windows以及linux 环境下Google Protocol Buffer 下载编译安装教程
- eclipse4.4的google protocol buffer的proto文件编辑器Protocol Buffer Editor安装
- 【學習筆記】NS中輸出格式
- RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)
- shell學習筆記之數值運算與運算符
- google protocol buffer (C++,Java序列化使用实例)
- LVM 學習筆記 --转载
- 學習筆記 ADO數據庫訪問技術
- RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)