Fastjson 第一次解析耗时更长

问题

发现程序开机启动慢,仔细调查,意外发现了fastjson解析慢的问题

使用fastjson版本

compile 'com.alibaba:fastjson:1.2.32'

示例说明

    // 在一个单元测试的case里 写代码验证
    @Test
    public void addition_isCorrect() throws Exception {
        assertEquals(4, 2 + 2);

        test("空字符串", new Runnable() {
            @Override
            public void run() {
                List strs = JSON.parseArray("", String.class);
            }
        });

        test("[]", new Runnable() {
            @Override
            public void run() {
                List strs = JSON.parseArray("[]", String.class);
            }
        });
        test("[\"a\"]", new Runnable() {
            @Override
            public void run() {
                List strs = JSON.parseArray("[\"a\"]", String.class);
            }
        });
    }

    public void test(String name, Runnable runnable) {
        long time = System.currentTimeMillis();
        runnable.run();
        System.out.println(name + " cost " + (System.currentTimeMillis() - time) + "\n");
    }

输出结果如下

空字符串 cost 92

[] cost 0

["a"] cost 0

简直不敢相信空字符串竟然耗时92ms

尝试修改了代码和顺序结果如下

{"a":"hello","b":2} cost 107

["a"] cost 0

["a"] again cost 0

[] cost 0

空字符串 cost 0

再修改顺序

["a"] cost 103

["a"] again cost 0

{"a":"hello","b":2} cost 16

[] cost 0

空字符串 cost 0
[] cost 79

["a"] cost 0

["a"] again cost 0

{"a":"hello","b":2} cost 10

空字符串 cost 0

发现原来第一次解析比较耗时

你可能感兴趣的:(Fastjson 第一次解析耗时更长)