@ProCxx

Страница 1636 из 2477
Александр
09.01.2018
12:48:57
Я просто не понял, к чему сообщение Антона

Ну ясно, что после 17 готовят 20-й

его один человек в силе будет охватить целиком?
Если кто-то охватывает 17-й, ему не станет проблемой охватить 20-й

Ignat
09.01.2018
12:49:59
Или 21-й

Google
Ignat
09.01.2018
12:50:02
Или как получится

Berkus
09.01.2018
12:50:03
Я просто не понял, к чему сообщение Антона
оно к предыдущему сообщению Матвея

Александр
09.01.2018
12:50:38
его один человек в силе будет охватить целиком?
Вообще, время "охренеть каких сложных фич" в плюсах давно прошло. Сейчас многие нововведения относительно просты для понимания и вводятся для удобства разработчика. Жесть была, когда люди с нуля шаблоны изучали, например. Со всеми тонкостями, конечно

Серж
09.01.2018
12:58:30
если не разбираться что там под капотом происходит то да, но почему тогда просто не взять джаву?

Berkus
09.01.2018
12:59:04
если не разбираться что там под капотом происходит то да, но почему тогда просто не взять джаву?
потому что в джаве тоже надо разбираться что происходит под капотом?

Vernat
09.01.2018
13:21:10
А готовит кто?
в том числе и сам Антон, автор той строки

Artem
09.01.2018
14:22:09
Подскажите как можно ускорить работу регулярных выражений, читаю файл размером 1 мегабайт в строку, и по регулярке ищу урлы, ищет 40 секунд 300 совпадений, хотя на питоне делал подобное за 3 секунды 1000000 строк чекал, куда копать или может есть феншуй в плюсах какой нибудь?

Ignat
09.01.2018
14:23:31
Маловато входных данных

Код на плюсах и питоне, например, явно не был бы лишним

Дед Пегас
09.01.2018
14:24:26
Да, код в студию.

Минимально воспроизводимый пример)

Pavel
09.01.2018
14:24:57
взять pcre, а лучше не юзать регулярки. для такой то задачи.

Google
Artem
09.01.2018
14:25:18
Ща секунду

вот метод

auto OpenFile(string file) { ifstream fileobj; fileobj.open(file); if (fileobj.is_open()) { cout << "Файл открыт!" << endl; regex pattern("((\\w+\\.)?\\w+\\.\\w{2,4})"); stringstream stringdata; stringdata << fileobj.rdbuf(); string strline = stringdata.str(); auto words_begin = sregex_iterator(strline.begin(), strline.end(), pattern); auto words_end = sregex_iterator(); for (sregex_iterator i = words_begin; i != words_end; ++i) { smatch match = *i; string match_str = match.str(); UrlVector.insert(UrlVector.end(),match_str); } sort(UrlVector.begin(), UrlVector.end()); UrlVector.resize(unique(UrlVector.begin(), UrlVector.end()) - UrlVector.begin()); cout << (int)UrlVector.size() << endl; } else { cout << "Файл не открыт!" << endl; } fileobj.close(); }

сиоуты для теста в работе их нет

Egor
09.01.2018
14:27:59
Лучше на ideone.com минимальный и самодостаточный пример (который запускается и видно, что он матчит).

Artem
09.01.2018
14:28:17
ок я только учусь не знаю как лучше

ща сделаю

Egor
09.01.2018
14:29:29
И код на питоне тоже куда-нибудь на ideone.com в виде отдельной программы, которая что-то читает и матчит.

Artem
09.01.2018
14:32:50
вот https://ideone.com/2lFbkc

только там для работы файл нужен test.txt

желательно строк 500 и что бы там ссылок было хотя бы 300

был вы очень рад понять как за несколько секунд обрабоать например миллион строк

Egor
09.01.2018
14:35:26
А что за компилятор, с какими флагами компилируете?

Artem
09.01.2018
14:36:31
я еще не сильгно соображаю, но это вижуал обычный 2017.3 с++17 жму кнопку отладить или собрать

Alexander
09.01.2018
14:36:33
А что за компилятор, с какими флагами компилируете?
судя по всему, неправильный вопрос.

Artem
09.01.2018
14:36:37
стандартный компил собирает

Alexander
09.01.2018
14:36:41
вот правильный вопрос

и я рекомендую обратиться в @supapro

Artem
09.01.2018
14:37:02
и релиз и дебаг тормозят почти одинакого

Google
Alexander
09.01.2018
14:37:22
Pavel
09.01.2018
14:37:32
выкинуть регексп — правильный ответ

Artem
09.01.2018
14:37:44
а как ссылки пасрить тогда

Pavel
09.01.2018
14:37:46
ну или хотябы выкинуть std::regex. или его уже починили?

а как ссылки пасрить тогда
да хотябы вот конечным автоматом

Alexander
09.01.2018
14:38:37
ты про скорость работы?

Pavel
09.01.2018
14:38:54
это же он называется просто страшно, а на самом деле тяп ляп и получится уже гораздо быстрее

ты про скорость работы?
да, пару лет назад он был просто ужасен посравнению с libpcre

Constantine
09.01.2018
14:41:59
да хотябы вот конечным автоматом
а регэксп бесконечный?)

Artem
09.01.2018
14:43:34
про кнечный автомат не понял но регексп не бесконечный)

просто он долгий

Ignat
09.01.2018
14:43:57
ну там в бусте есть какие-то модные компайл-тайм почти-регулярки

небось перформансные!

Pavel
09.01.2018
14:44:22
просто он долгий
это прекрасно

Ignat
09.01.2018
14:44:38
(это не руководство к действию, а совет посмотреть нестандартные реализации)

Pavel
09.01.2018
14:44:38
а с++ не компаил тайм? (не стащщили из буста?)

Egor
09.01.2018
14:44:46
А ответы у питона и плюсов одинаковые?

Можете ещё код на питоне показать?

Artem
09.01.2018
14:45:31
питон вообще все делает за три секунды с 1кк строк по жтой же регулярке, и причем я ему загоняю инфу построчно

Google
Artem
09.01.2018
14:45:42
если построчно это делать в ++ то вообще хана

может и пол часа выполнять

Egor
09.01.2018
14:46:37
И код — ..?

Artem
09.01.2018
14:47:18
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

вот так питон делает на лету

а с++ подыхает на регулярке в чем прикол неопнятно

Simon
09.01.2018
14:49:03
в том, что ты не понимаешь, что делаешь

Artem
09.01.2018
14:49:48
я создают массив в питоне вектор в ++ читаю файл прогоняю через регулярку и добавляю в вектор а в питоне в массив

все одинакого

Egor
09.01.2018
14:50:30
Предлагаю переместиться в #supapro

Artem
09.01.2018
14:51:06
ладно, спс

Ignat
09.01.2018
14:51:46
Зачем писать «#supapro», если можно «@supapro.cxx»?

Egor
09.01.2018
14:52:16
Не помню, как пишется полное название чата

Ignat
09.01.2018
14:53:11
Даже нет ведь, просто @supapro

Alexander
09.01.2018
14:54:23
Зачем писать «#supapro», если можно «@supapro.cxx»?
раньше при такой записи появлялся бот с красивой табличкой. Теперь не появляется)

Berkus
09.01.2018
15:02:36
std::regex выкинь, попробуй pcrepp какой-нибудь напрямую

Alexander
09.01.2018
15:06:43
кстати как вариант попробовать заюзать libc++ - мб у них под капотом что-то более шустрое

Ignat
09.01.2018
15:06:59
очевидно слишком сложный совет

Alexander
09.01.2018
15:07:10
очевидно слишком сложный совет
не могу не согласиться в данном случае

Antony
09.01.2018
15:18:24
Google
Egor
09.01.2018
15:18:45
А можно код посмотреть на с++ ?
Например: https://ideone.com/63tsbN

Реальный юзкейс: найти URL в файле (эта регулярка - префикс более сложной). Вероятно, regex_search в гцц и вижаке работает за квадрат в лучшем случае. В clang, как говорят в соседнем чате, ситуация сильно лучше.

Antony
09.01.2018
15:26:10
Например: https://ideone.com/63tsbN
С -stdlib=libc++ не падает

Похоже на багу

Artem
09.01.2018
15:30:58
Подвожу итог с холиваром по длительной работе регулярке, запустил тот же код на Маке в Силионе с компилом Сланг - результат в раз 30 лучше что меня полностью удовлетворяет

Antony
09.01.2018
15:32:14
У GCC похоже вот на эту багу: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79539 Но я на всякий пожарный заведу отдельный тикет

Artem
09.01.2018
15:36:18
Быстрее питона пока не встречал обработку регулярок но про руби тоже хорошо отзываются, но для виндового приложения clang вполне справляется и со стандартной либой regex

Olesya
09.01.2018
15:40:04
попробуйте re2, он быстрее pcre https://github.com/google/re2

Vsevolod
09.01.2018
15:40:53
Hyperscan быстрее всего

А c++ regexp - какаха

В libc++ и libstdc++, по крайней мере

Olesya
09.01.2018
15:41:47
Hyperscan быстрее всего
не пользовалась

у re2 ещё api удобное + там можно больше регэксп запихнуть, чем в pcre

Ignat
09.01.2018
15:46:20
В libc++ и libstdc++, по крайней мере
вроде ведь пришли к выводу, что в libc++ ничего

Pirate
09.01.2018
16:03:10
Попробовал Qt Creator, понравился, спасибо за совет

Там и MSVC Build Tools 2013-2017 в комплекте идут, btw

Страница 1636 из 2477