После поиска в Google обнаружил, что Джексон имеет лучшую производительность, чем gson, я планирую заменить gson на Джексон в моем проекте, но я получил другой результат при запуске тестового кода.
private static final Type PHOTOLINKS_TYPE_GSON = new TypeToken<List<Photo>>() {}.getType();
private static final Type PHOTOCAPTIONS_TYPE_GSON = new TypeToken<List<String>>() {}.getType();
Gson gson = new Gson();
private void testGson(String photoJson, String captionJson) {
GSON_MON.start();
List<Photo> photos = gson.fromJson(photoJson, PHOTOLINKS_TYPE_GSON);
List<String> photoCaptions = gson.fromJson(captionJson, PHOTOCAPTIONS_TYPE_GSON);
GSON_MON.stop();
}
TypeReference<List<Photo>> PHOTOLINKS_TYPE_JACKSON = new TypeReference<List<Photo>>(){};
TypeReference<List<String>> PHOTOCAPTIONS_TYPE_JACKSON = new TypeReference<List<String>>(){};
ObjectMapper mapper = new ObjectMapper();
private void testJackson(String photoJson, String captionJson) {
JACKSON_MON.start();
try {
List<Photo> photos = mapper.readValue(photoJson, PHOTOLINKS_TYPE_JACKSON);
List<String> photoCaptions = mapper.readValue(captionJson, PHOTOCAPTIONS_TYPE_JACKSON);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
JACKSON_MON.stop();
}
Фотографияобычный класс:
@JsonIgnoreProperties(ignoreUnknown = true)
private static class Photo implements Serializable {
private static final long serialVersionUID = 5645393489907650496L;
public String small;
public String middle;
public String orign;
public String caption;
public String ow;
public String oh;
}
, а фотография json выглядит примерно так: [{"id": "1318403074887", "orign": "xxx.jpg", "ow": 427, "small": "xxx.jpg", "средний": "xxx.jpg", "о": 640}, { "идентификатор": "1318403076793", "orign": "xxx.jpg", "вл": 640,»маленький ":" xxx.jpg», "средний": "xxx.jpg", "о": 480}, { "идентификатор": "1318403092168", "orign": "xxx.jpg", "вл": 425, "small": "xxx.jpg", "middle": "xxx.jpg", "oh": 640}]
я использую JAMon для мониторинга производительности, ниже приведен результат:
- JAMon Label = Джексон, Единицы = мс .: (LastValue = 18,0, Hits = 30,0, Avg = 18,4, Total = 552,0, Min = 13,0, Max = 37,0, Active = 0,0, Avg Active = 1,0,Макс. Актив = 1,0)
- JAMon Label = gson, Единицы = мс .: (LastValue = 4.0, Hits = 30.0, Avg = 2.1666666666666665, Всего = 65.0, Min = 0.0, Max = 4.0, Active = 0.0,Avg Active = 1,0, Max Active = 1,0)
- JAMon Label = Джексон, Units = мс .: (LastValue = 20,0, Hits = 30,0, Avg = 15,166666666666666, Total = 455,0, Min = 12,0, Max = 25,0, Active = 0,0, Avg Active = 1,0, Max Active = 1,0)
- JAMon Label = gson, Units = ms .: (LastValue = 4.0, Hits = 30.0, Avg = 2.2, Total = 66.0, Min = 0.0, Max = 9.0, Active = 0.0, Avg Active = 1.0, Max Active= 1,0)
- JAMon Label = Джексон, Единицы = мс .: (LastValue = 19,0, Hits = 30,0, Avg = 16,433333333333334, Всего = 493,0, Min = 11,0, Макс = 51,0, Active = 0,0, Avg Active= 1.0, Макс. Актив = 1.0)
- JAMon Label = gson, Единицы = мс .: (LastValue = 2.0, Hits = 30.0, Avg = 1.9, Total = 57.0, Min = 0.0, Max = 6.0, Active= 0.0, Avg Active = 1.0, Max Active = 1.0)
кажется, что gson быстрее, чем Джексон, среднее время gson составляет около 2 мс, в то время как Джексон составляет около 16 мс, я делаю ошибку, когдаиспользуя Джексона?