有一个9M多行的语料库,文件大小4G。现在需要匹配指定动词,符合句子条件的输出。
但是文件过大。每次读取一行。匹配下来要好久。请问有没有什么方法可以加快处理速度。
BufferedReader cpreader = new BufferedReader(new InputStreamReader(new FileInputStream(this.getCorpusPath())));
tring line = cpreader.readLine();
while(line != null)
{
ArrayList<String> verbList = new ArrayList();
matcher_line = Pattern.compile("(.*\\%\\&\\$cook\\%\\&\\$VB.*)").matcher(line);
if(matcher_line.find())
{
System.out.println(line);
}
line = cpreader.readLine();
}
Sepatutnya tiada masalah membaca fail, tetapi anda boleh cuba menukar kepada bacaan buffer, kerana saiz garisan mungkin tidak pasti, yang akan menjejaskan kecekapan. .
Jika padanan adalah satu perkataan, anda boleh menggunakan kaedah padanan yang lebih baik, saya tidak tahu sama ada ia adalah biasa
Program anda diproses oleh barisan satu-benang pastinya perlahan Gunakan pemprosesan berbilang-benang gunakan cache untuk membaca berbilang baris Kemudian peruntukkannya kepada berbilang benang untuk diproses, supaya CPU boleh dimaksimumkan.
nio multithreading
Ini berada di dalam gelung, dan ungkapan biasa mesti disusun setiap kali, jadi ia sangat perlahan Anda boleh meletakkannya di luar sementara dan lihat