gpt4 book ai didi

performance - jackson 和 gson 之间的 json 解析性能

转载 作者:行者123 更新时间:2023-12-04 15:14:56 27 4
gpt4 key购买 nike

在谷歌搜索后,发现jackson的性能比gson更好,我打算在我的项目中用jackson替换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","middle":"xxx.jpg","oh": 640},{"id":"1318403076793","orign":"xxx.jpg","ow":640,"small":"xxx.jpg","middle":"xxx.jpg","oh ":480},{"id":"1318403092168","orign":"xxx.jpg","ow":425,"small":"xxx.jpg","middle":"xxx.jpg", “哦”:640}]

我使用 JAMon 来监控性能,结果如下:
  • JAMon 标签=jackson,单位=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)
  • JAMon 标签=gson,单位=ms。:(LastValue=4.0,Hits=30.0,Avg=2.1666666666666665,Total=65.0,Min=0.0,Max=4.0,Active=0.0,Avg Active=1.0.0.Max Active=1
  • JAMon Label=jackson, Units=ms.: (LastValue=20.0, Hits=30.0, Avg=15.166666666666666, Total=455.0, Min=12.0, Max=25.0, Av. Active=0.1, Max Active=1.0.0
  • JAMon 标签=gson,单位=毫秒:(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=jackson, Units=ms.: (LastValue=19.0, Hits=30.0, Avg=16.433333333333334, Total=493.0, Min=11.0, Max=51.0, Av. Active=0.1, Max Active=1.0.0
  • JAMon 标签=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比jackson更快,gson的平均时间约为2ms,而jackson约为16ms,我在使用jackson时会出错吗?

    最佳答案

    性能监控可能是一个简单的问题:看起来您没有通过运行足够长的测试来“预热”JVM 以让它编译字节码等等。通常,在进行测量之前,测试至少需要运行 5 - 10 秒。

    所以也许可以先尝试这样做,看看数字是如何变化的。我打赌两者的数字都会增加——对于小物体,它应该需要几分之一毫秒。

    关于performance - jackson 和 gson 之间的 json 解析性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736941/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com