问题描述
- protobuf传输数据效率问题
-
有两个类似的功能,功能A传输的protobuf包有5000左右byte,另一个功能B传输protobuf包只有500左右byte,但是今天做效率测试的时候发现功能A从客户端发包到服务器收包并处理数据然后回包再到客户端接受服务器回包,整个过程消耗大概60毫秒,而同样的流程功能B消耗了200毫秒,客户端与服务器的数据处理时间可忽略不计,一整天都没能找到原因,求大神指点,附上两个消息包结构
message A
{
required int result = 1;
repeated pack obj = 2;
}message pack
{
required int num1 = 1;
required int num2 = 2;
required int num3 = 3;
......
required int num9 = 9;
}message B
{
required int result = 1;
repeated gameObj = 2;
}message gameObj
{
optional int num1 = 1;
......
optional int num6 = 6;
}两个消息包的所有成员都有使用到,都有被赋值
解决方案
http://blog.chinaunix.net/uid-26922071-id-3723751.html
解决方案二:
A的元素比B多,有9个int,而B是6个int,而且A是required ,而B是optional ,它可以没有数据等,这样可以传输的时候压缩更大比例。
时间: 2024-11-08 17:25:30