读取和拆分的速度为85 MB/sec。 我使用了560 MB文件,每行有20列。 下面是代码:
package csvreader_speedtest;
import java.io.*;
public class Csvreader_SpeedTest {
final char delimiter = ',';
String[] splitted = new String[64];
Csvreader_SpeedTest(String filename) throws Throwable {
File file = new File(filename);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
long t0 = System.currentTimeMillis();
while ((line = reader.readLine()) != null) {
split(line);
}
long t1 = System.currentTimeMillis();
reader.close();
System.out.println("read " + file.length() + " bytes in " + (t1 - t0) + " ms");
}
private void split(String line) {
int idxComma, idxToken = 0, fromIndex = 0;
while ((idxComma = line.indexOf(delimiter, fromIndex)) != -1) {
splitted[idxToken++] = line.substring(fromIndex, idxComma);
fromIndex = idxComma + 1;
}
splitted[idxToken] = line.substring(fromIndex);
}
}
输出:
read 561362951 bytes in 6575 ms
更新: 如果我使用的splitted = line.split(",");代替split(line);,速度下降到32 MB/sec 更新2:而不破,则速度为194 MB/sec。你需要多快?