Googleで検索した後、jacksonがgsonよりも優れたパフォーマンスを示しています。私はgsonをプロジェクトでjacksonに置き換える予定ですが、テストコードを実行すると、jsonとgsonの間のjson構文解析のパフォーマンス
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"、」 xxx.jpg "、" xxx.jpg "、" oh ":640}、{" id ":" 1318403076793 "、" orign ":" xxx.jpg " 、 "ow":640、 "small": "xxx.jpg"、 "middle": "xxx.jpg"、 "oh":480}、{"id": "1318403092168"、 "orign": "xxx。 x45.jpg "、" xxx.jpg "、" oh ":640}]
私はパフォーマンスをモニターするためにJAMonを使用しています。結果:
- ハモン・ラベル=ジャクソン、単位=ミリ秒:(LastValue = 18.0、ヒット数= 30.0、平均= 18.4、合計= 552.0、分= 13.0、マックス= 37.0、アクティブ= 0.0、平均は、Active = 1.0、最終値= 4.0、ヒット= 30.0、平均= 2.1666666666666665、合計= 65.0、最小= 0.0、最大= 4.0、アクティブ= 0.0、平均アクティブ= 0.0)最終値= 20.0、ヒット= 30.0、平均= 15.166666666666666、合計= 455.0、最小= 12.0、最大= 25.0、アクティブ= 0.0、平均= 1.0、最大アクティブ= 1.0) (LastValue = 4.0、ヒット= 30.0、平均= 2.2、合計= 66.0、最小= 0.0、最大= 9.0、アクティブ= 0) 。 0、平均アクティブ= 1.0、最大アクティブ= 1.0)
- JAMon Label = jackson、単位= ms .:(最終値= 19.0、ヒット= 30.0、平均= 16.433333333333334、合計= 493.0、最小= 11.0、最大= 51.0、 (最終値= 2.0、ヒット数= 30.0、平均値= 1.9、合計= 57.0、最小値= 0.0、最大値= 0.0、平均値= 1.0、最大値= 1.0、最大値= 1.0) 、アクティブ= 0.0、平均アクティブ= 1.0、最大アクティブ= 1.0)
gsonはjacksonよりも速く、gsonの平均時間は約2ms、jacksonは約16msですが、私は間違っていますジャクソンを使って?
はい、あなたは正しいです。 ジャクソンの合計:4742510320ns、平均:4742510ns gson合計:13498619947ns、平均:13498619ns ジャクソンの合計:7667802989ns、平均:7667802ns gson総 私は再度テストを実行し、ナノ秒を使用して監視し、 ジャクソンはgsonよりも高速です。 25132581619ns、平均:25132581ns – situch
いいよ、意味があります。それはうまくいってうれしい! – StaxMan
+1この情報についても同様のことが起こり、テストを数回実行した後に実行時間が4分の1に短縮されました –