prontera / spring-cloud-rest-tcc

以Spring Cloud Netflix作为服务治理基础, 展示基于tcc思想所实现的分布式事务解决方案
2.58k stars 1.21k forks source link

很赞~~ #18

Closed TaurusXi closed 7 years ago

TaurusXi commented 7 years ago

代码写的很赞.... 虽然我的程序还没跑起来...

JSON相关用的是 jackson,我前段时间对 Gson,fastJson 和 Jackson 做了下性能与Json支持度对比,结果是 gson的性能和可靠性在小数据(1kb)下是性能最优的,不知道作者后续有将Jackson换成gson的打算么?

prontera commented 7 years ago

您好,这个问题我以前也困惑过,那个时候查得的结果是Jackson是优于Gson的,虽然我并未亲自测试过。今天又遇到您提的这个问题,所以我又去Google了一下,找出了比较有代表性的两篇文章:

http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/ 该文章写于May 28, 2015,下面提示到更新于13/8/17,但并未表述出是否有更新Benchmark,也没有标出各个库所使用的版本。我们姑且认为他的Benchmark的结果是May 28, 2015所得的,这篇文章的结果表示1kb大小的时候是Gson占优,190Mb的时候是Jackson占优(而且是优势明显)。

https://github.com/fabienrenaud/java-json-benchmark 该仓库的Benchmark时间为May the 21st, 2017,可以清晰看到Gson无论是序列化还是反序列化都不占优势,而Jackson成绩较好。

虽鄙人并未进行过测试,但是根据以上两篇文章我的观点如下:

  1. 即便是Gson在小文件序列化当中是优于Jackson的,我也会选择Jackson,因为大多数情况下默认即有理。
  2. Jackson的很多技法是被服务端开发人员所熟知的,这里会有一个学习成本和试错成本的考虑。
  3. 服务端多用的是Jackson,而我的安卓同事多用的是Gson,看框架的支持程度了。

综上所述,所以并不考虑将Jackson换成Gson。

prontera commented 7 years ago

因没有更进一步的反馈故关闭该话题,如有更多的问题欢迎新开issue。