前言
前段时间有网友针对国内Top500和Google Play Top200 Android应用做了全面的分析,其中有涉及到对主流应用使用json框架Gson、FastJson、Jackson的统计,具体情况如下:
可见无论是在国内还是国际上,有很多应用会用到json框架,其中谷歌提供的gson框架是被使用得最多的,老牌json框架Jackson属于小众,阿里出品的FastJson在国内的使用情况仅次于Gson,但在国际上却基本没有APP在使用.
测试方案
被使用得最多并不代表就一定是最优方案,在使用json框架的过程中,我们最关注的应该是效率和易用性的问题,三种框架的具体实现各不相同,肯定会存在效率和易用性上的差异,针对这两方面的分析网络上的文章并没有比较权威、能够说服大家的观点(FastJson引用的测试结果可以参考,但不足以说服所有人),本文结合工作中的实际情况,使用三种框架分别对bean转String、String转bean、List转String、String转List、Map转String、String转Map这几种情况进行实际测试,得出在耗时、CPU占用、内存变化、易用性上的测试结果.
为了让测试结果显得更为可信,有必要说明一下测试方案:
使用相同的测试环境:入参相同(数据来源、测试次数)、运行的环境相同;每个框架都使用最新的版本,如果有Android定制版优先使用Android定制版(Gson:2.7、FastJson:1.1.52.android、jackson:jackson-all-1.9.9);
为了避免单次测试可能存在的不确定性因素,每个框架的每次测试都是重复测试100次,然后算平均值;
为了观察不同量级的数据量对效率的影响,数据量可以人为设置,测试时分别从10的0次方到10的4次方,每次测试以10为倍数的增长方式(即1、10、100、1000、10000,根据实际情况,测试10万次就显得不是很必要了,如果数据量太大,可以考虑分多次获取和转换)观察不同框架在不同量级数据的表现情况; 考虑到生成数据也会导致耗时的问题,对每个框架的每次测试,100次的测试中只生成一次数据; 考虑到测试的可操作性,对每个框架的每次测试中,bean转String、String转bean、List转String、String转List、Map转String、String转Map都是一并进行的,所以对内存变化和CPU变化的测试结果是这六项测试的综合结果.
考虑到可读性和代码量的问题,直接提供链接会比贴代码好一点:
ParseJson4Android
本篇文章是由达内培训为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以加微信公众号.
更多达内培训相关咨询,请扫描下方二维码