Я сравниваю подстроки в двух больших текстовых файлах.Очень просто, разбить токены на два контейнера токенов, сравнивая с 2 для циклов. Производительность катастрофическая! У кого-нибудь есть совет или идея, как улучшить производительность?
for (int s = 0; s < txtA.TokenContainer.size(); s++) {
String strTxtA = txtA.getSubStr(s);
strLengthA = txtA.getNumToken(s);
if (strLengthA >= dp.getMinStrLength()) {
int tokenFileB = 1;
for (int t = 0; t < txtB.TokenContainer.size(); t++) {
String strTxtB = txtB.getSubStr(t);
strLengthB = txtB.getNumToken(t);
if (strTxtA.equalsIgnoreCase(strTxtB)) {
try {
subStrTemp = new SubStrTemp(
txtA.ID, txtB.ID, tokenFileA, tokenFileB,
(tokenFileA + strLengthA - 1),
(tokenFileB + strLengthB - 1));
if (subStrContainer.contains(subStrTemp) == false) {
subStrContainer.addElement(subStrTemp);
}
} catch (Exception ex) {
logger.error("error");
}
}
tokenFileB += strLengthB;
}
tokenFileA += strLengthA;
}
}
Обычно мой код читает две большие строки с помощью Java Tokonizer в контейнеры A и B. И затем пытаетсядля сравнения подстрок. Возможности подстрок, которые существуют в обеих строках для хранения в векторе.Но производительность ужасна, также не знаю, как ее решить с помощью HashMap.