对protobuf的补充观点:
你说的对 测试的数据并不是真实的数据,并不具备实战意思。
测试的数据不同 导致结果 结论不同。
不过我的这个例子的本意是探寻protobuf,json对于不同数据类型在传输过程中不同处理方式。
先说json。。。
json是把所有数据当做字符串去处理
1.比如double 类型的数据2.4122541有多长就占用多少byte。
2.json的各种格式符号都占用了空间 比如“” : { [ 这类
3.json的key占用空间,我这个例子里 key都是单个字符
对比protobuf
先说key,它的key 就是proto文件里的定义的 optional string str = 1; 里的1,所以只占用1个btye。如果大于16的话 就是2个btye。
了解了这点就可以看出来每个数据类型具体占用多少byte了
boolean :1
double 无论小数位多少,都是8
int :2-4 这个很奇怪 不是固定的
根据protobuf的文档 protobuf比json多干了一步 就是encode
而且文档有说是怎么压缩的 我是没怎么看懂
但是用protobuf有个问题就是 编出来的java文件太大了