json解析性能比較(gson與jackson) (zz)

如今json的第三方解析工做不少,如json-lib,gson,jackson,fastjson等等。在咱們完成通常的json-object轉換工做時,幾乎都沒有任何問題。
可是當數據的量上來時,他們的性能幾何呢?我着手測試了一下gson和jackson,其餘的如json-lib性能不好,fastjson雖然性能很好,可是在使用時有些問題,因此這裏就沒有測試。

簡略代碼:
        //生成較大的json
        List  list = new ArrayList ();
        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耗時json

10w           1366                   138app

20w           2720                   165性能

30w           4706                   332測試

40w           9526                   317ui

50w           本機OOM             363spa


從測試結果能夠看出,jackson的性能幾乎是gson的10倍,並且隨着數據的增加,jackson的耗時也都很平穩,而gson則耗時增加明顯,最後直接OOM了,
至於爲何jackson性能這麼好,我也沒有細究,多是因爲jackson採用流的處理方式吧。


相關文章
相關標籤/搜索