Protocol Buffer(Google) 學習筆記一

Protocol Buffer是 Google 公司針對結構化的數據制定的一個比 XML 傳輸速度更快的一種標記文本格式, 它能使用 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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值