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耗時

10w           1366                   138

20w           2720                   165

30w           4706                   332

40w           9526                   317

50w           本機OOM             363


從測試結果可以看出,jackson的性能幾乎是gson的10倍,而且隨着數據的增長,jackson的耗時也都很平穩,而gson則耗時增長明顯,最后直接OOM了,
至於為什么jackson性能這么好,我也沒有細究,可能是由於jackson采用流的處理方式吧。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM