I need to read large file(like 400 mb) and make regex match in it. The problem is that it takes like 40 sec to read 800kb file and 15+ min for 5 mb file. Here is code:
private int regexCompare(String text,Pattern p){
if (text.isEmpty()) return 0;
Matcher m = p.matcher(text);
while (m.find()) {
word.add(m.group());
}
combineBrackets(word);
return 1;
}
Regex: String symbolsPattern = "([\\p{L}\\p{N}_#]+|[<>+\\-/*&!=.]+|[\\[\\]{}()])";
here is method, where i read file and match it
Date currentTime = new Date();
FileInputStream fis = new FileInputStream(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8"));
while(br.ready())
{
fileContents += br.readLine() + "\n";
}
br.close();
regexCompare(fileContents,pattern);
Date newTime = new Date();
double msDelay = newTime.getTime() - currentTime.getTime();
double toMin = 1000*60;
timeLabel.setText("Maked in " + msDelay/toMin + " min");