第一次将Java对象转换为JSON字符串时出现性能问题,第二次工作正常
我需要将一个Java对象转换为JSON字符串,在一种情况下它的工作速度非常快(25毫秒),在另一种情况下(2000毫秒)非常慢。这是一段代码:第一次将Java对象转换为JSON字符串时出现性能问题,第二次工作正常,json,Json,我需要将一个Java对象转换为JSON字符串,在一种情况下它的工作速度非常快(25毫秒),在另一种情况下(2000毫秒)非常慢。这是一段代码: public AuditTrailDetails createAuditTrailDetails(String propertyName, Object oldValue, Object newValue, AuditTrail entity) throws IOException { ObjectMapper objectMapper = po
public AuditTrailDetails createAuditTrailDetails(String propertyName, Object oldValue, Object newValue, AuditTrail entity) throws IOException {
ObjectMapper objectMapper = policyManagerObjectMapper.getObjectMapper();
String oldValueAsJSON = null;
String newValueAsJSON = null;
long startTime = System.currentTimeMillis();
oldValueAsJSON = (oldValue != null) ? objectMapper
.writeValueAsString(oldValue) : null;
long endTime = System.currentTimeMillis();
log.info("Time taken to convert old value into string is: " + (endTime - startTime));
startTime = System.currentTimeMillis();
newValueAsJSON = (newValue != null) ? objectMapper
.writeValueAsString(newValue) : null;
endTime = System.currentTimeMillis();
log.info("Time taken to convert new value into string is: " + (endTime - startTime));
}
@Component public class PolicyManagerObjectMapperImpl implements PolicyManagerObjectMapper {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
public ObjectMapper getObjectMapper() {
return objectMapper;
}
}
此createAuditTrailDetails将从代码中的两个位置调用。在第一种情况下,oldValue被传递给要转换的对象,而newValue被传递为null。转换需要很多时间(2000毫秒)。在第二种情况下,oldValue被传递为null,newValue被传递给要转换的对象。转换速度相当快(25毫秒)。这个迭代进行了2000次,另一个需要提到的是转换后的json字符串的大小是28KB(当它快的时候)和14kb(当它慢的时候),所以它实际上是相反的。json的格式完全相同,只是数据量增加了一倍。我不明白为什么会这样。