首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

Google Protocol Buffer举例来说1

2012-09-13 
Google Protocol Buffer举例1??? optional string email 3????? enum PhoneType {???????? MOBILE 0

Google Protocol Buffer举例1


??? 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++程序示例:

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);

從上面的例子我們可以看到, Protocol Buffer實際上就是 C++裡面的一個結構型, 所以它的運行速度比起 XML文件會快上非常大的倍數.? 因為XML 需要從文件中讀取出字符串,再轉譯成 XML 文檔對象結構模型, 然後再從XML 文檔對象結構模型中讀取出指定節點的字符串, 最後再將這個字符串轉換成指定類型的變量, 這樣繁複的處理, 將大大消耗 CPU 資源. 而Protocol Buffer只需要簡單地將一個二進制序列, 按照指定的格式讀取到 C++ 結構類型中去就行了.

热点排行