Помимо предварительной компиляции вашего регулярного выражения, вы можете получить (возможно, намного больше) выигрыш в производительности, написав более точное регулярное выражение.В этом отношении .*
почти всегда является неправильным выбором:
(.*) is connected
означает: сначала сопоставьте всю строку (это часть .*
), затем верните один символ навремя, пока возможно совпадение is connected
.
Теперь, если строка не очень короткая или is connected
не появляется очень близко к концу строки, это большой возврат, который стоит времени.
Итак, если вы можете уточнить, что такое разрешенное совпадение, вы можете улучшить производительность.
Например, если разрешены только буквенно-цифровые символы, тогда (\w+) is connected
будет хорошим.Если это какой-либо непробельный символ, используйте (\S+) is connected
.И т.д., в зависимости от правил для действительного совпадения.
В вашем конкретном примере вы, похоже, ничего не делаете с захваченным совпадением, так что вы можете даже вообще отбросить регулярное выражение и просто искать фиксированноеподстрока.Какой метод будет самым быстрым в конечном итоге, во многом зависит от вашего фактического ввода и требований.