Есть лог файл в текстовом формате, весом 4gb. Структура файла - это N строк весом примерно 200 байт. Необходимо получать строки (добавлять их в массив), в которых есть ключевое слово. Очень важна скорость получения информации. На данный момент реализовано следующим образом:
public List<String> readFileByFilter(String fileName, String filter) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>();
while (reader.ready()) {
String tmp = reader.readLine();
if (tmp.matches(".*"+ filter +".*")) {
list.add(tmp);
}
}
reader.close();
return list;
}
Подскажите, есть ли возможность сделать производительней (быстрей) данный участок кода?
Строка
if (tmp.matches(".*"+ filter +".*")) {
вызываемая в цикле, это уникальнейший провал производительности
Замените эту строку на
if (tmp.contains(filter)) {
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости