之前做的乙個專案,為了提速,用到了序列化儲存。
下面是乙個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...