0
我目前正在尝试使用Jackson数据绑定库从Map创建52个Java对象,并且它目前总共花费3.518秒来转换所有52个对象,这似乎非常缓慢。我不确定为什么会出现这种情况。这是一种异常现象还是可以做些什么来使这些转换更快?使用Jackson Object Mapper将地图转换为Java对象的速度很慢
这里是我的Java对象类:
public class MoodDatapoint extends DocumentModelHelper {
@JsonProperty(value = "happiness")
private int happiness;
@JsonProperty(value = "stress")
private int stress;
@JsonProperty(value = "pain")
private int pain;
@JsonProperty(value = "timestamp")
private long timestamp;
@JsonProperty(value = "lat")
private double lat;
@JsonProperty(value = "lng")
private double lng;
@JsonProperty(value = "comment")
private String comment;
@JsonProperty(value = "event_name")
private String eventName;
@JsonProperty(value = "is_before")
private boolean isBefore;
@JsonProperty(value = "related_event_id")
private String relatedEventID;
}
这里是我试图转换到类地图:
{
stress=0,
pain=0,
happiness=10,
timestamp=1488464269384,
is_before=false,
lng=-79.6208645,
event_name=null,
comment=,
lat=43.6462939,
related_event_id=null
}
而且我的代码的地图转换为对象:
ObjectMapper m = new ObjectMapper();
MoodDatapoint datapoint = m.convertValue(map, MoodDatapoint.class);
使用logcat来计算每个对象转换的持续时间,似乎每个转换需要一个平均值o f 62毫秒:
...
D/M DATAPOINT CONVERSION DURATION: 68
D/M DATAPOINT CONVERSION DURATION: 45
D/TOTAL DURATION (S): 3550
D/AVG DURATION: 68
D/Total objects:
你只是指出了这一点,或者你有怀疑吗? –
你能发布更多的代码吗?看来你正在为每次转换创建一个ObjectMapper ......这确实很慢。 – Okas
@Okas这实际上是问题!我现在使用ObjectMapper的单个实例,并且在同一操作中,我已经从3500+ ms变为52ms。谢谢。 – damememan