vlambda博客
学习文章列表

264.protobuf 有多耗内存?(二)

每天一个开发小知识


前两天工作中遇到:


55M 的数据放到 protobuf 中


protobuf 占用的内存为 1.4G



总感觉 protobuf 不至于这么差


今天特意写个测试代码


// test.protomessage TestPb{ optional uint32 id = 1; optional uint32 qid = 2;};


// main.cppvoid TestPB(){ uint32_t len = 1024 * 1024; TestPb * pb = new TestPb[len]; for (uint32_t i = 0; i < len; ++i) { pb[i].set_id(100); pb[i].set_qid(100); } cout << "sizeof(pb):" << sizeof(pb) << endl; cout << "sizeof(TestPb):" << sizeof(TestPb) << endl; sleep(10 * 60);}


预估 40M 的数据放入 protobuf 中


实际内存为 30M


这个测试数据让我不得不怀疑


那天内存下降 1.4G 并不是 protobuf 引起的


不过


我现在也没有证据证明这个怀疑是否正确


每天一个开发小知识,今天你学废了吗?