一、背景
GSON是Google提供的开源库,使用很便捷,但是在使用过程中也发现了其短板。在Bean类结构复杂时,进行反序列化耗时较长,尤其是很多在应用启动阶段需要反序列化一些内置的数据时,很让人头疼,通过抓Trace能发现这个性能问题。
注:本文基于Gson2.8.5分析(implementation ‘com.google.code.gson:gson:2.8.5’)
二、反序列化为什么耗时分析?
2.1 抛出问题:gson反序列化过程火焰图
如上图GSON解析过程可以看出,在反序列化过程中使用了大量反射导致耗时较长。
json结构:
{
"name":"zhang",
"age":33,
"sex":1,
"bestStudent":{
"name":"san",
"age":10,
"sex":1,
"grade":1,
"favoriteSubject":{
"subjectName":"music",
"subjectScore":90.1
},
"subjects":[
{
"subjectName":"music",
"subjectScore":90.1
},
{
"subjectName":"literature",
"subjectScore":80.1
},
{
"subjectName":"mathematics",
"subjectScore":70.1
}
]
},
"students":[
{
"name":"li",
"age":10,
"sex":1,
"grade":1,
"favoriteSubject":{
"subjectName":"music",
"subjectScore":90.1
},
"subjects":[
{
"subjectName":"music",
"subjectScore":90.1
},
{
"subjectName":"literature",
"subjectScore":80.1
},
{
"subjectName":"mathematics",
"subjectScore":70.1
}
]
},
{
"name":"wang",
"age":10,
"sex":1,
"grade":1,
"favoriteSubject":{
"subjectName":"literature",
"subjectScore"