У меня есть строка, как это:Использование регулярного выражения для потенциального улучшения производительности синтаксического анализа строк?
// string1
horse|cow|goat|zebra|
и другую строку, как это:
// string2
horse:a,pig:b,cow:z,monkey:g,goat:a,
моя цель состоит в том, чтобы разделить строку1, а затем выбрать все вхождения его в строке2, чтобы построить гистограмму , В настоящее время я делаю это:
var histogram = {};
var animals = string1.split("|");
for (var i = 0; i < animals.length; i++) {
var animal = animals[i];
var animalColon = animal + ":";
var index = string2.indexOf(animalColon);
while (index != -1) {
var indexColon = index + animalColon.length;
var indexFinal = string2.indexOf(",", indexColon);
var letter = string2.substring(indexColon, indexFinal);
if (histogram[letter] == null) {
histogram[letter] = 1;
}
else {
histogram[letter] = histogram[letter] + 1;
}
index = string2.indexOf(animalColon, index + 1);
}
}
в конце концов, он может напечатать что-то вроде:
// histogram:
a: 2 instances // from { horse, goat }
z: 1 instance // from { cow }
выше будет работать, но я должен дп animals.length проходит через строке2 проверить все.
Есть ли способ использовать регулярные выражения для этого синтаксического анализа - по существу, выполнять все тесты параллельно, а не выполнять несколько проходов? Поскольку string2 является const, кажется, что все проверки могут выполняться одновременно (не уверен, что регулярные выражения реализованы так).
я увеличил количество элементов в string1 и string2 порядка тысяч элементов, и это все еще работает довольно быстро, но я беспокоюсь о более медленных машинах, ремонтопригодности и тому подобное,
Благодаря