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采用流的处理方式吧。


相关文章
相关标签/搜索