Pavel
Ignat
(это не руководство к действию, а совет посмотреть нестандартные реализации)
Pavel
а с++ не компаил тайм? (не стащщили из буста?)
Egor
А ответы у питона и плюсов одинаковые?
Egor
Можете ещё код на питоне показать?
Tommy Shelby
питон вообще все делает за три секунды с 1кк строк по жтой же регулярке, и причем я ему загоняю инфу построчно
Tommy Shelby
если построчно это делать в ++ то вообще хана
Tommy Shelby
может и пол часа выполнять
Egor
И код — ..?
Tommy Shelby
def get_links(file):
lists = []
data = open(file, 'r').read()
pattern = '(?:[\w\.]+)\.(?:[a-z]{2,6}\.?)'
result = re.findall(pattern, data)
for url in list(set(result)):
lists.append("https://" + url)
lists.append("http://" + url)
print(f'Всего {len(lists)} элементов')
return lists
Tommy Shelby
вот так питон делает на лету
Tommy Shelby
а с++ подыхает на регулярке в чем прикол неопнятно
RattenKong 🦧🐀🦍️
в том, что ты не понимаешь, что делаешь
Tommy Shelby
я создают массив в питоне вектор в ++ читаю файл прогоняю через регулярку и добавляю в вектор а в питоне в массив
Tommy Shelby
все одинакого
Egor
Предлагаю переместиться в #supapro
Tommy Shelby
ладно, спс
Ignat
Зачем писать «#supapro», если можно «@supapro.cxx»?
Egor
Не помню, как пишется полное название чата
Ignat
Даже нет ведь, просто @supapro
Berkus
std::regex выкинь, попробуй pcrepp какой-нибудь напрямую
Alexander "SonnySlave"
кстати как вариант попробовать заюзать libc++ - мб у них под капотом что-то более шустрое
Ignat
очевидно слишком сложный совет
🐙 Antony
Egor
Реальный юзкейс: найти URL в файле (эта регулярка - префикс более сложной). Вероятно, regex_search в гцц и вижаке работает за квадрат в лучшем случае. В clang, как говорят в соседнем чате, ситуация сильно лучше.
Alexander "SonnySlave"
🐙 Antony
🐙 Antony
Похоже на багу
Tommy Shelby
Подвожу итог с холиваром по длительной работе регулярке, запустил тот же код на Маке в Силионе с компилом Сланг - результат в раз 30 лучше что меня полностью удовлетворяет
🐙 Antony
У GCC похоже вот на эту багу: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79539
Но я на всякий пожарный заведу отдельный тикет
Berkus
Tommy Shelby
Быстрее питона пока не встречал обработку регулярок но про руби тоже хорошо отзываются, но для виндового приложения clang вполне справляется и со стандартной либой regex
Olesya
попробуйте re2, он быстрее pcre https://github.com/google/re2
Vsevolod
Hyperscan быстрее всего
Vsevolod
А c++ regexp - какаха
Vsevolod
В libc++ и libstdc++, по крайней мере
Olesya
Olesya
у re2 ещё api удобное + там можно больше регэксп запихнуть, чем в pcre
🐙 Antony
Anonymous
Попробовал Qt Creator, понравился, спасибо за совет
Anonymous
Там и MSVC Build Tools 2013-2017 в комплекте идут, btw
Anonymous
И 64-битный MinGW можно накатить, правда с бубном чуть поплясать придется
Anonymous
Ignat
Alexander "SonnySlave"
Igor
Раньше, может, лагало. Сейчас работает незаметно. От железа еще зависит, конечно
Alexander "SonnySlave"
хм, надо перепроверить что ли. Раньше мой i7 довольно сильно проседал
Igor
Мой рабочий даже не замечает что его что-то нагружает)
Egor
Завёл: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83754
Вангую Won't Fix с комментарием "это stack overflow из-за слишком большого входа, что ожидаемо при нашей реализации, а стандарт не требует работы на длинных строках, вы не должны использовать <regex> на длинных строках, котому что будет stack overflow" :(
🐙 Antony
Ставлю на то, что починят вместе с полиномиальным поиском
🦥Alex Fails
🦥Alex Fails
🦥Alex Fails
Anonymous
Pcre тормозной аж зубы сводит. Используй PIRE или ragel
🦥Alex Fails
а отметинолавочки вообще есть по этим либам с регэкспам?
Berkus
🦥Alex Fails
надо ему в mailing list отправить
Berkus
Burado
В спп есть какая-либо встроенная асинхронность?
Berkus
Igor
Burado
Спасибо.
Aleksey
Ребят, если есть структура с несколькими полями и есть класс с точно такими же полями, я правильно понимаю, что единственное отличие между ними в том, что структура располагается в памяти строго целиком, а поля класса могут оказаться в далеких друг от друга областях памяти?
Alexander "SonnySlave"
Ioann_
Так, ну я это - просто мимо проходил, а вот это оставлю здесь, может комментариев кто даст каких:
https://godbolt.org/g/qGQWJq
Aleksey
класс в памяти тоже всегда располагается целиком?
Anatoly
Aleksey
Alexander "SonnySlave"
Anatoly
Aleksey
Тогда получается, если мне вдруг необходимо расположить поля в памяти последовательно в определенных адресах, я могу смело использовать класс?
Alexander "SonnySlave"
Так-так-так, что у нас говорит Стандарт про memory layout ? 😊
Anatoly