前俩篇博文是从大牛的博客抄过来的, 写的都很好. 这里还写简单写下自己的感想:

1. 和json比, protobuff编码后的体积小很多, 这是肯定的. 都源自于protobuff内部的一系列特殊的编码方式. 而且这些编码的性能都很高, 由很少的简单数学计算和位运算组成.

2. 和Jackson比, 不知道速度有没有jackson快. jackson内部最耗时的应该是俩部分, 一个是对类结构的解析, 二是通过反射获取各个字段的值. 针对第一点, 我认为可以忽略, 因为对一个类的结构的解析, 往往只需要一次, 然后就会把结果缓存下来, 后面都不需要再重新解析了.   针对第二点, 我不太清楚protobuff和protostuff内部有没有通过反射来获取类内字段的信息. 以前自己写过用protobuff序列化的代码, 感觉是不需要使用反射的. 因为数据都是在proto生成的javaBean里. 然后由我们自己再导入自己的javaBean里. 但是protostuff就不晓得了.

PS:  做了一个实验, 果然, jackson第一次序列化比protostuff第一次慢一些. 但是再后续序列化的时候, 俩个都快了很多倍, 效率超高. 牛逼牛逼 jackson里会缓存scheme信息我知道, protostuff里是怎么搞的就不知道了, 还得研究下. 个人瞎猜, 里边应该也有对java类结构信息的解析和缓存.

总体来说, 不管走没走scheme的缓存, proto都比jackson要快不少

05-03 22:47