Краткий ответ: Джексон быстр.
Длинный ответ:
Должен сказать, извините, я допустил большую ошибку.Сериализация POJO не так проста, как я думал, она расширяет некоторый базовый класс сущностей, и сериализация базового класса делает что-то медленное в запросе к базе данных.
Если вы столкнетесь с вопросом, внимательно проверьте ваш POJO.
set show-sql = true поможет вам найти проблему.
Старая ошибка:
, чтобы доказать, что Джексон действительно медлителенЯ добавляю некоторый код здесь:
long start = System.currentTimeMillis();
ObjectMapper mapper = new ObjectMapper();
ArrayList<Obsidian> results = new ArrayList<Obsidian>();
for (Obsidian obs : obsidianRepo.findByOrder(order)) {
results.add(obs);
mapper.writeValueAsString(obs);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
Как вы можете видеть, я вручную вызываю jackson com.fasterxml.jackson.databind.ObjectMapper в цикле for, чтобы увидеть, сколько времени это стоит, и результат: 33247 мс, это именно то время, которое я измерил в браузере ajax.
@Test
public void testJackson() throws JsonProcessingException {
Obsidian obs = new Obsidian();
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(obs);
}
Я также добавляю Test in JUnit Test, его стоимость составляет 0,070 с.
как сравнение Gson:
@Test
public void testJackson() throws JsonProcessingException {
Obsidian obs = new Obsidian();
Gson gson = new Gson();
gson.toJson(obs);
}
Gson стоит всего 0,018 с.(все еще слишком медленно)