Я должен превратить List<Map>
в строку JSON. Map
s являются плоскими и содержат примитивные и строковые данные. Прямо сейчас я использую GSON. В принципе, как это:JSON performance
List<Map> list = new ArrayList();
Map map = new HashMap();
map.put("id",100);
map.put("name","Joe");
map.put("country","US");
// ...
list.add(map);
Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
Stopwatch sw = Stopwatch.createStarted(); // guava's stopwatch
String s = gson.toJson(list);
System.err.println("toJson laps " + sw);
return s;
list
может иметь 100 записей и каждую карту APROX. 20 полей. GSON действительно занимает много времени, чтобы создать строку JSON. Строка JSON будет возвращена HTTP-ответом, и сейчас потребовалось слишком много времени (8000 мс). Поэтому я пробую другие: json-smart, jackson и т. Д. Но никто не дает значительного повышения скорости. Я отслеживаю создание строки JSON как горячую точку во время выполнения.
Для полей размером 100 x 20 я действительно не ожидаю больше секунды, но требуется значительно больше времени. Есть ли исцеление для этого?
Обновление Я наблюдал за некоторыми данными BLOB, которые возвращаются. Спасибо вам всем.
8000ms на весь запрос? Вы уже измерили время от карты до Джона? – isnot2bad
Из-за простоты структуры я дал бы ручную конструкцию ('StringBuilder') выстрел –
Можете ли вы показать, как вы измеряете время, которое требуется GSON для создания вашей строки JSON. Я создаю гораздо большие строки JSON с GSON, чем это, и у меня вообще нет проблемы с производительностью. – bhspencer