Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300162
  • 博文数量: 35
  • 博客积分: 836
  • 博客等级: 准尉
  • 技术积分: 678
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-07 20:11
文章分类

全部博文(35)

文章存档

2013年(1)

2012年(24)

2011年(10)

分类: LINUX

2011-12-27 21:03:55

最近两天闲来无事将google的protocol buffer代码大致看了下。

看的程度没有达到非常仔细的程度,但是大概知道了具体序列化以及反序列化的过程。

今天上班的时候,又研究了下公司里现有的序列化以及反序列化工具的代码。

然后做了两个简单的实验对比了一下两者之间的差别。

主要的区别有以下两点

1.公司里的库使用的是json格式,需要存储每个元素的名字,所以序列化后的字符串会比较长,proto buffer则使用tag作为序列化的标签,tag根据数值使用不同长度的字节,从1字节开始。也因为此点,proto buffer序列化后的字符串会比json格式的短很多。

2.序列化、反序列化的执行效率。proto buffer与公司相关库均是自动生成,但是效率上没有具体测试,但是分析代码即可知proto buffer更胜一筹。主要体现在以下几个方面。

1) proto buffer中使用switch case,而且比较的是tag数值,并且在每个case有expectTag预测下一个元素的执行逻辑; 相比较而言,公司中的库使用的是while()然后将所有的json中的名字判断一下,这样序列化的结果应该是与元素个数平方的关系

2)proto buffer中比较的是定点数,而json则是属于字符串的比较。

自己很少写东西,语句表达不是很流畅,慢慢练吧。

阅读(1737) | 评论(0) | 转发(0) |
0

上一篇:reset

下一篇:fastcgi

给主人留下些什么吧!~~