#json
#json
Вопрос:
Мне нужно преобразовать объект Java в строку JSON, он работает довольно быстро (25 миллисекунд) в 1 случае и очень медленно в другом случае (2000 миллисекунд). Это фрагмент кода:
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;
}
}
Комментарии:
1. Этот createAuditTrailDetails вызывается из 2 мест в коде. В 1-м случае oldValue передается объекту для преобразования, а newValue передается null. Для преобразования требуется много времени (2000 миллисекунд). Во 2-м случае oldValue передается null, а newValue передается объекту для преобразования. Преобразование выполняется довольно быстро (25 миллисекунд). И эта итерация выполняется 2000 раз.
2. Еще одна вещь, которую следует упомянуть, это размер преобразованной строки json составляет 28 КБ (когда она быстрая) и 14 КБ (когда она медленная), так что на самом деле все наоборот. И формат json точно такой же, просто объем данных удваивается. Я не понимаю, почему это происходит.