为什么JSON-lib 4x比Java 8慢4

时间:2015-09-09 14:04:45

标签: java json

我发现{J}文件的JSON-lib解析在Java 8上比Java 6慢4倍。

我在Linux 64位机器上测试过。

您可以从here下载包含所需jar文件的现成运行代码。

以下是源代码:

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;

import net.sf.json.JSONObject;


public class JsonLib {
    public static void main(String [] args) throws Exception {
        String sampleJsonPath = "sample.json";
        byte [] b = new byte[2048];
        int totalRuns = 50;
        if (args.length > 0) {
            totalRuns = Integer.parseInt(args[0]);
        }
        int len;
        ByteArrayOutputStream bop = new ByteArrayOutputStream(8192);
        InputStream ip = new FileInputStream(sampleJsonPath);
        while ((len = ip.read(b)) > 0) {
            bop.write(b, 0, len);
        }
        ip.close();
        String countryJson = new String(bop.toByteArray());
        long start = System.currentTimeMillis();
        long runStart = start;
        long runEnd;
        for (int i = 0; i < totalRuns;) {
            JSONObject.fromObject(countryJson);
            i++;
            if (i % 10 == 0) {
                runEnd = System.currentTimeMillis();
                System.out.println("PARSE TIME for run " + (i-10) + '-' + i + " = " + (runEnd - runStart));
                runStart = runEnd;
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("Total time = " + (end -start));
    }
}

代码解析大型json文件50次,每10次运行打印一次。

Java 6大约需要1.5秒,而Java 8大约需要7秒。

在我的公司,我们通过转移到jackson解析器解决了这个问题。

但是,如果有人能够在这种特殊情况下更清楚地了解Java 8的缓慢原因,那将会很棒。

0 个答案:

没有答案