264.protobuf 有多耗内存?(二)
每天一个开发小知识
前两天工作中遇到:
55M 的数据放到 protobuf 中
protobuf 占用的内存为 1.4G
总感觉 protobuf 不至于这么差
今天特意写个测试代码
test.proto
message TestPb
{
optional uint32 id = 1;
optional uint32 qid = 2;
};
// main.cpp
void 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 引起的
不过
我现在也没有证据证明这个怀疑是否正确
每天一个开发小知识,今天你学废了吗?