【发布时间】:2017-07-22 08:50:00
【问题描述】:
我目前正在尝试使用 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:
【问题讨论】:
-
您只是指出这一点还是对此有疑问?
-
您能发布更多代码吗?看来您正在为每次转换创建一个 ObjectMapper ......这确实很慢。
-
@Okas 这实际上是问题所在!我现在正在使用 ObjectMapper 的单个实例,并且在同一操作中我已经从 3500+ 毫秒变为 52 毫秒。谢谢。
标签: java android json jackson objectmapper