我目前正在尝试使用Jackson数据绑定库从Map创建52个Java对象,目前转换所有52个对象总共需要3.518秒,这似乎非常慢。我不确定为什么会这样。这是一个异常还是可以做些什么来使这些转换更快?
这是我的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
}
我的代码将Map转换为对象:
ObjectMapper m = new ObjectMapper();
MoodDatapoint datapoint = m.convertValue(map, MoodDatapoint.class);
使用logcat计算每个对象转换的持续时间,似乎每次转换平均需要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:
答案 0 :(得分:1)
不要为每次转换创建ObjectMapper,而是创建一个实例并将其用于所有转换。 ObjectMapper创建是一项非常昂贵的操作。