Jackson和FastJson性能谁更快

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jackson和FastJson性能谁更快相关的知识,希望对你有一定的参考价值。

参考技术A Fastjson快,但是和jackson 的差距不大,优势并没有太明显。Jackson还可以加上AfterBurner来使用byte generation,这样和Fastjson的差距就更小了。
除了速度胜出外,Fastjson相比较 Jackson 有不少短板。
1. 可定制性
Jackson有灵活的API,可以很容易进行扩展和定制,而且很多时候需要的模块都已经有人提供了。比如guava中定义的数据类型,比如kotlin语言Immutable的类型等,比如java8 引入的新日期时间类型和Optional都已经有支持的模块。
FastJson只有一个(简陋)的SerializeFilter机制用来定制序列化,ParseProcess机制用来定制反序列化,每次调用序列化/反序列化的的时候都要自己传filter或者Process这个参数过去,Jackson和 Gson都是直接注册模块就可以了,Jackson还可以使用SPI来自动发现和注册模块。
2. 代码质量
公司有一些项目使用了fastjson,在使用fastjson的项目里面碰到的两个低级bug:
1. 碰到在128~255 的字符直接异常,这些主要是西欧语言的字符,因为他用一个数组来记录 转义后的字符表示,但是数组长度只有128...
2. 内存占用过多。Fastjson为了性能,在ThreadLocal中缓存了char[] buffer,这样避免分配内存和gc的开销。但是如果碰到了大的json(比如10M这样的),就会占用大量的内存,而且以后都是处理小json了内存占用也回不来。
这些问题虽然后来的版本都修复了,但是也反映出Fastjson代码质量上要求不够严格。 而Jackson这么多年来使用上还没有碰到过这样的Bug.
3. 文档
英文文档缺乏已有的也不规范,相比较国内用户还多些。
参考技术B 对比使用对象
在对比中使用的对象基本包含了所有的数据类型和集合,并且是随机生成。这里我直接借鉴了别人测试的时候使用的对象,因为的确比较好,我便没有修改

以上是关于Jackson和FastJson性能谁更快的主要内容,如果未能解决你的问题,请参考以下文章

利用fastjson反序列化json为对象和对象数组

SpringBoot 返回json 字符串(jackson 及 fast json)

fastjson和jackson使用对比

Json 工具介绍 fastjson gson jackson

spring boot2 修改默认json解析器Jackson为fastjson

Gson、FastJson、Jackson、json-lib对比总结