protobuf序列化儲存

2021-07-09 12:29:19 字數 1730 閱讀 2530

之前做的乙個專案,為了提速,用到了序列化儲存。

下面是乙個protobuf的使用示例。

#include "person.pb.h"

#include "iostream"

#include "fstream"

#include "time.h"

#pragma comment(lib, "libprotobuf.lib")

#pragma comment(lib, "libprotobuf-lite.lib")

#pragma comment(lib, "libprotoc.lib")

namespace pf=google::protobuf;

int main(void)

std::fstream out_file("../resource/test_pb.dat", std::ios::out | \

std::ios::trunc | std::ios::binary);

if(!t_msg.serializetoostream(&out_file))

out_file.close();

t2 = clock();

std::ofstream a("../resource/test.dat");

for(int i=0; i<102400; i++)

a.close();

t3 = clock();

//read from test_pb.dat

lm::m_pb_test r_msg;

std::fstream in_file("../resource/test_pb.dat", std::ios::in | std::ios::binary);

if(!r_msg.parsefromistream(&in_file))

//std::cout << r_msg.id() <::const_iterator iter=r_msg.img().begin(); \

iter != r_msg.img().end(); iter++)

std::cout << std::endl;

pf::shutdownprotobuflibrary();

t4 = clock();

std::ifstream in("../resource/test.dat");

if (!in.is_open())

float c;

while(!in.eof())

in.close();

t5 = clock();

std::cout << "pb write time: " << (double)(t2-t1)/clocks_per_sec << std::endl;

std::cout << "normal write time: " << (double)(t3-t2)/clocks_per_sec << std::endl;

std::cout << "pb read time: " << (double)(t4-t3)/clocks_per_sec << std::endl;

std::cout << "normal read time: " << (double)(t5-t4)/clocks_per_sec << std::endl;

system("pause");

return 0;

}

當然,實際使用時還有一些配置問題。

到時候可自行搜尋。

ProtoBuf 常用序列化 反序列化API

各位親 有時間可以去看看我的 金駿家居 店 買時說明在我的部落格看到有優惠哦 還有意外禮品贈送 真正的程式設計師 店 1 c陣列的序列化和反序列化api cpp view plain copy c陣列的序列化和序列化api bool parsefromarray const void data,in...

ProtoBuf 常用序列化 反序列化API

1 c陣列的序列化和反序列化api cpp view plain copy c陣列的序列化和序列化api bool parsefromarray const void data,intsize bool serializetoarray void data,intsize const 使用 void...

ProtoBuf 常用序列化 反序列化API

1 c陣列的序列化和反序列化api cpp view plain copy c陣列的序列化和序列化api bool parsefromarray const void data,intsize bool serializetoarray void data,intsize const 使用 void...