但是當數據的量上來時,他們的性能幾何呢?我着手測試了一下gson和jackson,其他的如json-lib性能很差,fastjson雖然性能很好,但是在使用時有些問題,所以這里就沒有測試。
簡略代碼:
//生成較大的json
List
for (int i = 0; i < 500000; i++) {
JsonObject obj = new JsonObject();
obj.setId(i);
obj.setName("name" + String.valueOf(i));
list.add(obj);
}
Gson gson = new GsonBuilder().create();
String str = gson.toJson(list);
//1,gson解析
long start1 = System.currentTimeMillis();
List l = gson.fromJson(str, new TypeToken
-
>() {
}.getType());
System.out.println("gson time elapse:" + (System.currentTimeMillis() - start1));
System.out.println(l.size());
//2,jackson解析
ObjectMapper mapper = new ObjectMapper();
long start2 = System.currentTimeMillis();
List l2 = mapper.readValue(str, new TypeReference
-
>() {
});
System.out.println("jackson time elapse:" + (System.currentTimeMillis() - start2));
System.out.println(l2.size());
測試結果:
數據集 gson耗時 Jackson耗時
10w 1366 138
20w 2720 165
30w 4706 332
40w 9526 317
50w 本機OOM 363
從測試結果可以看出,jackson的性能幾乎是gson的10倍,而且隨着數據的增長,jackson的耗時也都很平穩,而gson則耗時增長明顯,最后直接OOM了,
至於為什么jackson性能這么好,我也沒有細究,可能是由於jackson采用流的處理方式吧。
