Это цикл в моем коде, который я пытаюсь оптимизировать. Он принимает arg [0] в качестве имени файла и делает подстроки, но не все подстроки, например , мышей в качестве мышей, льда, ce, e. Это то, что делает getAllUniqueSubset()
.Оптимизация цикла для генерации подстрок
BufferedReader in = new BufferedReader(new FileReader(args[0]));
new File("./indexof"+args[0]).mkdirs();
BufferedWriter out = null;
SubString sub = new SubString();
String s;
while ((s = in.readLine()) != null) {
String[] list = s.split(" ");
for(int i=0;i<list.length;i++){
ArrayList<String> substrings = sub.getAllUniqueSubset(list[i].replaceAll("[^a-zA-Z]", "").toLowerCase());
for(String sb:substrings){
out = new BufferedWriter(new FileWriter("./indexof"+args[0].toLowerCase()+"/"+sb.charAt(0)+".txt",true));
out.write(sb);
out.write(" ");
out.write(Integer.toString(lineNumber));
out.newLine();
out.flush();
}
}
lineNumber++;
}
in.close();
out.close();
Этот бит кода получает подстроки я уже упоминал выше, из файла и сортов в каждый файл Шара (0) .txt
это занимает около 70000ms заботиться о файле 500кб
но когда файл становится достаточно большим, как 500mb, время становится настолько большим
поэтому мои вопросы
- Есть ли лучший способ получить подстроки, как я хочу в файл?
- Или есть способ ускорить работу BufferedReader?
Я думаю, что будет лучше сделать 'String [] list = s.toLowerCase(). ReplaceAll (" [^ az] "," ") .split (" ")' вместо этого для каждой строки 'String 'в массиве. – Titus
Кроме того, вы не закрываете «BufferedWriter» после того, как закончите с ним. – Titus
oh извините за это. после кода происходит закрытие(). Я отредактирую его – MeromGreen