测试读取250m的文件,有100万行数据,测试数据对比:
@AxisRange(min = 0) @BenchmarkMethodChart(filePrefix = "split-benchmark-barchart") public class SplitTest { @Rule public BenchmarkRule benchmarkRun = new BenchmarkRule(); private static final Splitter splitter = Splitter.on('|').omitEmptyStrings(); @Test public void jdkSplitTest() throws IOException { File file = new File("G:/huawu/PS_FileInnerMon1_20130723170104-14076.dat"); Files.readLines(file, Charsets.UTF_8, new LineProcessor<Integer>() { int count; @Override public boolean processLine(String line) throws IOException { count++; line.split("|"); return true; } @Override public Integer getResult() { return count; } }); } @Test public void langSplitTest() throws IOException { File file = new File("G:/huawu/PS_FileInnerMon1_20130723170003-9836.dat"); Files.readLines(file, Charsets.UTF_8, new LineProcessor<Integer>() { int count; @Override public boolean processLine(String line) throws IOException { count++; StringUtils.split(line, '|'); return true; } @Override public Integer getResult() { return count; } }); } @Test public void guavaSplitTest() throws IOException { File file = new File("G:/huawu/PS_FileInnerMon1_20130723170003-9836.dat"); Files.readLines(file, Charsets.UTF_8, new LineProcessor<Integer>() { int count; @Override public boolean processLine(String line) throws IOException { count++; splitter.split(line); return true; } @Override public Integer getResult() { return count; } }); } }