У меня есть несколько больших файлов (сотни МБ), которые мне нужны для поиска уникальных строк в несколько тысяч 20 символов.
Я обнаружил, что использование метасимвола чередования каналов для сопоставления регулярных выражений типа (string1|string2|string3)
значительно ускоряет процесс поиска (по сравнению с поиском по одной строке за раз).
Каков предел того, насколько это будет масштабироваться? Сколько выражений можно объединить вместе? В какой-то момент это вызовет какое-то переполнение? Есть ли лучший способ сделать это?
ИЗМЕНИТЬ
В попытке сохранить мой вопрос кратко, я не подчеркивал тот факт, что я уже реализовал код с использованием этого метода чередования, и я нашел его полезным: на тестовом примере с типичным набором данных, временем выполнения был уменьшен с 87 минут до 18 секунд - 290-кратное ускорение, по-видимому, с O (n) вместо O (n * m).
Мой вопрос связан с тем, как можно ожидать, что этот подход будет работать, когда другие пользователи будут запускать этот код в будущем, используя гораздо большие наборы данных с большими файлами и более поисковыми терминами. Исходный код O (n * m) был существующим кодом, который использовался в течение 13 лет, и его медлительность была отмечена недавно, поскольку связанные с геномом данные, с которыми он работает, недавно получили намного больше.