java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比_马丁半只瞄的博客-CSDN博客_fastjson protobuf


本站和网页 https://blog.csdn.net/fenglongmiao/article/details/79425218 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比_马丁半只瞄的博客-CSDN博客_fastjson protobuf
java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比
马丁半只瞄
于 2018-03-02 17:00:15 发布
16174
收藏
21
分类专栏:
序列化
文章标签:
java序列化
protobuf
thrift
kryo
json
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fenglongmiao/article/details/79425218
版权
序列化
专栏收录该内容
1 篇文章
0 订阅
订阅专栏

我们为什么要序列化
     举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放。那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列化。我们要用的时候,就需要将字节流重构成对象,这叫反序列化。不知道我这么说大家能不能理解。
java序列化的缺点
java自己提供序列化而且用起来也非常简单,但是在远程服务调用中很少用它,主要存在以下缺点:
1.无法跨语言。这应该是java序列化最致命的问题了。由于java序列化是java内部私有的协议,其他语言不支持,导致别的语言无法反序列化,这严重阻碍了它的应用。
2.序列后的码流太大。java序列化的大小是二进制编码的5倍多!
3.序列化性能太低。java序列化的性能只有二进制编码的6.17倍,可见java序列化性能实在太差了。
总结 我们判断一个编码框架的优劣主要从以下几个方面:
1.是否支持跨语言,支持语种是否丰富
2.编码后的码流
3.编解码的性能
4.类库是否小巧,API使用是否方便
5.使用者开发的工作量和难度。
几个流行的编解码框架
1.google的Protobuf
Protobuf是google开源的项目,全称 Google Protocol Buffers.特点:
1.结构化数据存储格式(xml,json等)
2.高性能编解码技术
3.语言和平台无关,扩展性好
4.支持java,C++,Python三种语言。
2.faceBook的Thrift
Thrift源于faceBook,2007年facebook将Thrift做为一个开源项目交给了apache基金会。特点:
1.Thrift支持多种语言(C++,C#,Cocoa,Erlag,Haskell,java,Ocami,Perl,PHP,Python,Ruby,和SmallTalk)
2.Thrift适用了组建大型数据交换及存储工具,对于大型系统中的内部数据传输,相对于Json和xml在性能上和传输大小上都有明显的优势。
3.Thrift支持三种比较典型的编码方式。(通用二进制编码,压缩二进制编码,优化的可选字段压缩编解码)
3.kryo
官方文档中文翻译:http://blog.csdn.net/fanjunjaden/article/details/72823866
1.速度快,序列化后体积小
2.跨语言支持较复杂
4.hessian
1.默认支持跨语言
2.较慢
5.fst
高性能序列化框架FST:http://liuyieyer.iteye.com/blog/2136240
1.fst是完全兼容JDK序列化协议的系列化框架,序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右。
6.序列化成json
各个JSON技术的比较详解:http://developer.51cto.com/art/201506/480273.htm
6.1、开源的Jackson
相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。
而且Jackson社区相对比较活跃,更新速度也比较快。
Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。
Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式
6.2、Google的Gson
Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,
但自从在2008年五月公开发布第一版后已被许多公司或用户应用。
Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。
Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。
6.3、阿里巴巴的FastJson
Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
无依赖,不需要例外额外的jar,能够直接跑在JDK上。
FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
综上4种Json技术的比较,在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用, 如果只是功能要求,没有性能要求,可以使用google的Gson, 如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean。
以上所有框架性能测试数据结果:http://developer.51cto.com/art/201506/480273.htm
马丁半只瞄
关注
关注
点赞
21
收藏
打赏
评论
java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比
我们为什么要序列化     举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放。那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列化。我们要用的时候,就需要将字节流重构成对象,这叫反序列化。不知道我这么说大家能不能理解。java序列化的缺点java自己提供序列化而且用起来也非常简单,但是在远程服务调用中很少用它,主要存在以...
复制链接
扫一扫
专栏目录
测试fastjson与protobuf
04-20
fastjson与protobuf,自己测试用代码
序列化工具(Gson, Jackson, FastJson, ProtoBuf)
02-23
各种序列化工具类,包括Gson, Jackson, FastJson, ProtoBuf以及proto.exe,希望大家喜欢
评论 2
您还未登录,请先
登录
后发表或查看评论
【SpringBoot笔记07】SpringBoot框架集成FastJson处理数据
•一个写代码的•
10-22
406
FastJson是阿里巴巴公司开发的一个专门用于处理JSON格式数据的依赖包,所以SpringBoot官方是没有专门提供FastJson的starter启动器的,但是有的人会自定义FastJson的starter启动器,实际开发里面,我们都是直接引入FastJson依赖,自己配置FastJson,而不会使用第三方的starter启动器。FastJson有两个版本,分别是:【FastJson】和【FastJson2】,看名字就知道啥意思了吧,FastJson2就是FastJson的升级版本呗。
Java对象序列化、Hessian、Json
最新发布
m0_73858774的博客
11-03
188
Java对象序列化、Hessian、Json
java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比...
weixin_34289454的博客
10-11
212
我们为什么要序列化 举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放。那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列化。我们要用的时候,就需要将字节流重构成对象,这叫反序列化。不知道我这么说大家能不能理解。java序列化的缺点java自己提供序列化而且用起来也非常简单,但是在...
<转>java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比...
weixin_30904593的博客
04-02
537
我们为什么要序列化
举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放。那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列化。我们要用的时候,就需要将字节流重构成对象,这叫反序列化。不知道我这么说大家能不能理解。
java序列化的缺点
java自己提供序列化而且用起来也非常简单,但是在远程服务调用中很少用...
【转载】序列化框架性能对比(kryo、hessian、java、protostuff)
baiyunxiaoxiao_chen的博客
04-24
648
本文转自: http://blog.csdn.net/jmppok/article/details/44409693 ,作者 jmppok,感谢分享
序列化框架性能对比(kryo、hessian、Java、protostuff)
简介:
优点
缺点
Kryo
速度快,序列化后体积小
Hessian、Kryo、Protostuff序列化使用区别
PANDA博客
03-10
1444
Kryo序列化后的数据相比Hessian小很多。
Hessian使用固定长度存储int和long,而kryo使用变长的int和long保证这种基本数据类型序列化后尽量小,实际应用中,很大的数据不会经常出现。
Kryo进行序列化的时候,需要传入完整类名或者利用 register() 提前将类注册到Kryo上,其类与一个int型的ID相关联,序列中只存放这个ID,因此序列体积就更小,而Hessian则是将所有类字段信息都放入序列化字节数组中,直接利用字节数组进行反序列化,不需要其他参与,因为存的东西多处理速
分布式架构下的序列化技术(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)大全
撸起袖子加油干
06-14
356
一、序列化工作的意义:
1、日常传输的报文,如果没有经过压缩,会影响传输效率,影响带宽。
2、跨语言,例如jason(对外的接口返回)/,WSDL
二、常见的序列化技术:
1、hassian;
2、msgpack
3、protobuf
4、kyro
5、avro
6、dubbo(hessian2)
7、json
8、jute(zookeeper)
...
java 序列化框架_序列化框架性能对比(kryo、hessian、java、protostuff)
weixin_34184876的博客
02-20
136
简介:优点缺点Kryo速度快,序列化后体积小跨语言支持较复杂Hessian默认支持跨语言较慢Protostuff速度快,基于protobuf需静态编译Protostuff-Runtime无需静态编译,但序列化前需预先传入schema不支持无默认构造函数的类,反序列化时需用户自己初始化序列化后的对象,其只负责将该对象进行赋值Java使用方便,可序列化所有类速度慢,占空间测试环境:硬件信息:16 In...
序列化方式介绍和性能比较 (kryo fastjson hessian jdk)
trigger的博客
07-30
362
JDK自带的序列化框架使用_trigger333的博客-CSDN博客深入理解Java序列化机制ObjectOutputStream源码简要分析_A__Plus的博客-CSDN博客_objectoutputstream。
【java】java原生序列化和Kryo序列化性能实例对比分析
九师兄
07-03
555
1.美图
2.概述
最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:
专门针对Java语言的:Kryo,FST等等
跨语言的:Protostuff,ProtoBuf,Thrift,Avro,MsgPack等等
这些序列化方式的性能多数都显著优于hessian2(甚至包括尚未成熟的dubbo序列化)。有鉴于此,我们为dubbo引入Kryo和FST这 两种高效Jav...
几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据对比
jazywoo_在路上
01-06
1386
对比了一下json,xml,java序列化相关的数据对比,从几个纬度进行对比。
别人的相关测试数据: http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking
测试纬度
序列化时间反序列化时间bytes大小
测试代码
准备protobuf文件
Messa
Java kryo/protobuf/protostuff序列化 or Json 性能对比
蓝色空间
03-02
9818
文章搬家至https://lcy362.github.io/posts/57802/
对于一个java object的序列化,想测一下使用json和使用一般序列化工具,在时间性能、空间性能上的区别。
json选择用fastjson.
序列化工具使用了protostuff和kyro. 为什么不用protobuf呢?因为感觉对于一个已有的上百个属性的java class来说,再去新建一个匹配的p...
java kryopt_jackson、fastjson、kryo、protostuff等序列化工具性能对比
weixin_35205982的博客
02-13
96
简介实际项目中,我们经常需要使用序列化工具来存储和传输对象。目前用得比较多的序列化工具有:jackson、fastjson、kryo、protostuff、fst 等,本文将简单对比这几款工具序列化和反序列化的性能。项目环境本文使用 jmh 作为测试工具。os:win 10jdk:1.8.0_231jmh:1.25选择的序列化工具及对应的版本如下:fastjson:1.2.74jackson:2....
java序列化
chao742210485的专栏
02-10
806
引言
色弱 目前移动客户端应用程序上,需要将用户内容持久化到设备上,一般任何feed流应用,如微博、推特、新闻客户端等都需要将内容做持久化操作,以便在内存回收后,再次进入程序能迅速恢复之前的内容。另外如一些视频、音乐、购物等软件,凡是收藏的视频、歌曲、商品以及个人主页等,也应将这些用户私有的内容做序列化,以便无网进入时也能看到相关内容,并正常使用软件。
陆陆续续使用和测试
序列化框架比较:kryo & hessian & Protostuff & java
xiaomin1991222的专栏
03-10
503
序列化框架性能对比(kryo、hessian、java、protostuff)
简介:
优点
缺点
Kryo
速度快,序列化后体积小
跨语言支持较复杂
Hessian
默认支持跨语言
较慢
Protostuff
速度快,基于protobuf
需静态编译
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
马丁半只瞄
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
64
原创
5万+
周排名
62万+
总排名
62万+
访问
等级
4077
积分
106
粉丝
221
获赞
128
评论
821
收藏
私信
关注
热门文章
idea中maven项目手动导入jar包解决办法
86043
java程序启动参数-D详解
55930
#!/usr/bin/python3 和 #!/usr/bin/env python3的区别
34406
java集合及concurrent并发包整理总结
31798
SM2的非对称加解密java工具类
31223
分类专栏
nginx
1篇
redis
1篇
消息队列
2篇
maven
5篇
内存队列
1篇
IDE
3篇
netty
1篇
jdk
4篇
RPC
1篇
ZooKeeper
10篇
linux
3篇
区块链
3篇
Elasticsearch
1篇
Executor
4篇
集合、concurrent
3篇
字符集
1篇
序列化
1篇
加解密
2篇
git
7篇
python
1篇
dubbo
1篇
MySQl
3篇
配置中心
3篇
Spring
4篇
马虎的前端
1篇
log
1篇
JSR-133
1篇
最新评论
SM2的非对称加解密java工具类
西瓜瓤649:
咱就是说,我怎么这么爱您!!!
idea中maven项目手动导入jar包解决办法
小美元:
我的老天鹅,太爱你了么么
java程序启动参数-D详解
明月几时有666:
感谢,有用。另外补充下【Java API 8 对System类的功能介绍中存在此句话 “access to externally defined properties”(翻译:有访问外部定义的系统属性的权利),正是通过System.getProperty(Object name)实现的; 在Windows的命令行下,输入java 或java -help 可以查看到对 - D的参数的解释: -D<名称>=<值> 设置系统属性】
idea中maven项目手动导入jar包解决办法
qq_42866265:
谢谢楼主,爱你么么哒
SM2的非对称加解密java工具类
weixin_53563599:
博主,可以加个好友请教下不?
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Spring Cloud Alibaba Spring Cloud Spring Boot 版本对应关系
论需求调研的重要性
Oracle序列的创建和使用
2022年1篇
2020年1篇
2019年11篇
2018年54篇
2017年2篇
目录
目录
分类专栏
nginx
1篇
redis
1篇
消息队列
2篇
maven
5篇
内存队列
1篇
IDE
3篇
netty
1篇
jdk
4篇
RPC
1篇
ZooKeeper
10篇
linux
3篇
区块链
3篇
Elasticsearch
1篇
Executor
4篇
集合、concurrent
3篇
字符集
1篇
序列化
1篇
加解密
2篇
git
7篇
python
1篇
dubbo
1篇
MySQl
3篇
配置中心
3篇
Spring
4篇
马虎的前端
1篇
log
1篇
JSR-133
1篇
目录
评论 2
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
马丁半只瞄
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值