Sau khi tìm kiếm trong google, thấy rằng jackson có hiệu suất tốt hơn so với gson, tôi có kế hoạch thay thế gson với jackson trong dự án của tôi, nhưng tôi có một kết quả khác khi chạy thử nghiệm mã.json phân tích cú pháp hiệu suất giữa jackson và 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();
}
Ảnh là một lớp học bình thường:
@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;
}
và ảnh json là một cái gì đó như: [{ "id": "1318403074887", "orign": "xxx.jpg"," ow ": 427," nhỏ ":" xxx.jpg "," giữa ":" xxx.jpg "," oh ": 640}, {" id ":" 1318403076793 "," orign ":" xxx.jpg " , "ow": 640, "nhỏ": "xxx.jpg", "giữa": "xxx.jpg", "oh": 480}, {"id": "1318403092168", "orign": "xxx. jpg "," ow ": 425," nhỏ ":" xxx.jpg "," trung bình ":" xxx.jpg "," oh ": 640}]
tôi sử dụng JAMon để tính toán hiệu suất, dưới đây là kết quả:
- JAMON Label = jackson, đơn vị = ms .: (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, Max Active = 1.0)
- Nhãn JAMON = gson, Đơn vị = ms .: (LastValue = 4.0, Số lần truy cập = 30.0, Trung bình = 2.1666666666666665, Tổng = 65.0, Min = 0.0, Max = 4.0, Hoạt động = 0.0, Trung bình hoạt động = 1.0, Max Active = 1.0)
- Nhãn JAMON = jackson, Đơn vị = ms .: (LastValue = 20.0, Hits = 30.0, Avg = 15.166666666666666, Tổng = 455.0, Min = 12.0, Max = 25.0, Hoạt động = 0.0, Trung bình Hoạt động = 1.0, Hoạt động tối đa = 1.0)
- Nhãn JAMON = gson, Đơn vị = ms .: (LastValue = 4.0, Số lần truy cập = 30.0, Trung bình = 2.2, Tổng = 66.0, Min = 0.0, Max = 9.0, Hoạt động = 0 . 0, Hoạt động trung bình = 1.0, Hoạt động tối đa = 1.0)
- Nhãn JAMON = jackson, Đơn vị = ms .: (LastValue = 19.0, Hits = 30.0, Avg = 16.433333333333334, Total = 493.0, Min = 11.0, Max = 51.0, Hoạt động = 0,0, Hoạt động trung bình = 1,0, Hoạt động tối đa = 1.0)
- Nhãn JAMON = gson, Đơn vị = ms .: (LastValue = 2.0, Số lần = 30.0, Trung bình = 1.9, Tổng = 57.0, Min = 0.0, Max = 6.0, Hoạt động = 0,0, Hoạt động trung bình = 1.0, Hoạt động tối đa = 1.0)
có vẻ như gson nhanh hơn jackson, thời gian trung bình của gson khoảng 2ms trong khi jackson khoảng 16ms, tôi có mắc lỗi khi sử dụng jackson?
có, bạn đã đúng. tôi chạy kiểm tra một lần nữa, và giám sát sử dụng nano giây, jackson là nhanh hơn so với gson: jackson tổng: 4742510320ns, trung bình: 4742510ns gson tổng: 13498619947ns, trung bình: 13498619ns jackson tổng: 7667802989ns, trung bình: 7667802ns gson tổng: 25132581619ns, avg: 25132581ns – situch
ok tốt, có ý nghĩa. vui mừng nó đã làm việc ra! – StaxMan
+1 cho thông tin này, một điều tương tự đã xảy ra với tôi và sau khi chạy thử nghiệm nhiều lần thời gian thực hiện đã giảm xuống theo hệ số 4 –