|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||||||||||||||||
Скорость выполнения функции в 2-ух вариантах26.08.2021, 23:27. Показов 4302. Ответов 33
Метки нет (Все метки)
Функция a_IsFindForbWord() выполняется в несколько раз быстрее, чем b_IsFindForbWord():
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Результат теста: a_IsFindForbWord(): 10203 (10 секунд) b_IsFindForbWord(): 67596 (67 секунд) Мне бы хотелось оставить ф-ию b_IsFindForbWord() для своей программы, но не могу понять - почему она такая медленная? Почитал форум немного и наткнулся, что как-то тормозит цикл где regex_iterator - Медленная работа regex (1-ый пост в конце). Как быть?
0
|
||||||||||||||||
| 26.08.2021, 23:27 | |
|
Ответы с готовыми решениями:
33
Скорость выполнения функции
Уменьшить время выполнения работы программы, увеличить скорость выполнения |
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 26.08.2021, 23:43 | |||
|
1) Динамическое выделение памяти 2) Построение автомата по регулярному паттерну 3) Применение автомата к последовательности То же касается строки входных данных, зачем они там в явном виде? Пусть это будет параметр std::string_view, и вы разгрузите функцию, дадите ей гибкость работать с разными данными, не обязательно динамическими.
1
|
|||
|
252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
|
||
| 27.08.2021, 01:19 | ||
Разделить долбаную небольшую строку.?
0
|
||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|||||||||||
| 28.08.2021, 01:44 [ТС] | |||||||||||
|
DrOffset,
вынес за функцию, в глобальную область пару строк, а именно
Честно говоря strtok меня особо не смущает, но думал, что вариант есть получше и даже побыстрее.. YUEN HOIFEF, да, но ведь в тесте вызывается 100 тысяч раз. и в векторе строк ~ 5000 слов перебирать необходимо
0
|
|||||||||||
|
Заблокирован
|
||||
| 28.08.2021, 03:37 | ||||
|
Вот тут можно и оптимизировать "чуток". Если поменять его на std::set.Добавлено через 9 минут
0
|
||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 28.08.2021, 11:39 | |
|
0
|
|
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||||||
| 29.08.2021, 02:32 | |||||||
|
Во-вторых, как уже упомянули, во втором варианте есть лишние выделения памяти. От них можно избавиться, например, вот так:
0
|
|||||||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||||||||||
| 18.09.2021, 15:39 [ТС] | ||||||||||
|
Кликните здесь для просмотра всего текста
0
|
||||||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
| 23.09.2021, 10:30 | |
|
leo7755, глянул мельком результат профилирования под VS2019. Основное время тратится на итерацию по std::sregex_iterator. Думаю, что на вашей задаче не удастся на регулярных выражениях получить результат, сопоставимый с strtok. Внутри std::sregex_iterator постоянно выделяется и освобождается динамическая память, да и других накладных расходов очень много.
0
|
|
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||
| 23.09.2021, 22:39 [ТС] | ||
|
Дело в том, что эти функции будут использоваться в игровом серверном моде с некоторым онлайном (~ 50-100 игроков). И там конечно же есть чат. Он фильтруется в некоторых моментах. И можете себе представить если в чат сразу отправят сообщение 20 игроков, т.е. 20 раз нужно будет вызвать функцию.
0
|
||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||
| 23.09.2021, 23:09 | ||
|
1. Взять стороннюю библиотеку для регулярных выражений. Очень вероятно, что она окажется существенно быстрее библиотеки из STL; 2. Выкинуть strtok и использовать std::string в связке с std::string::find_first_of. Должно работать несильно хуже strtok.
0
|
||
|
Заблокирован
|
|
| 23.09.2021, 23:39 | |
|
Я вот иногда захожу сюда, и думаю отчего же автор не использует ассоциативные контейнеры.
0
|
|
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
||
| 23.09.2021, 23:58 | ||
|
leo7755, можете еще попробовать следующее. Вместо того, чтобы строить регулярное выражение, которое просто выбирает слова из текста, можно попробовать создать специализированное регулярное выражение, которое сразу находит слова из фильтра. При большом размере фильтра это может работать быстрее, чем strtok и с циклом. Но может работать медленнее, чем strtok с каким-нибудь std::unordered_set.
1
|
||
|
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,266
|
|
| 24.09.2021, 08:03 | |
|
Может просто озвучить задачу, которую автор топика затрудняется решить? А то приходится напрягать свои экстрасенсорные навыки. Нужно в тексте найти некоторые ключевые слова из списка? Приблизительный размер текста? Приблизительный размер списка?
0
|
|
|
Заблокирован
|
|
| 24.09.2021, 12:24 | |
|
alexu_007, чем читаешь ? пятым ухом ?
Словарь около 5к слов, текст - сообщение чата, допустим от 10 до 40 слов. Как то в одном чате практиковался писать нецензур понятным всем способом, вариантов вагон и маленькая тележка. В итоге "закрыть" можно только базовые слова и словоформы.
0
|
|
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|||
| 28.09.2021, 22:06 [ТС] | |||
|
Кликните здесь для просмотра всего текста
урод
ур0д - где 0 это конечно же ноль Поэтому закрыть придётся много слов, в разных вариантах. И мне не лень будет это сделать)
0
|
|||
|
Заблокирован
|
||
| 29.09.2021, 12:09 | ||
|
Хотя я могу ошибаться. Но в любом случае никакой вектор тут не применим. Самій лучший вариант - дерево + морф. анализатор. Добавлено через 53 секунды тот же map, и есть примитивное дерево
1
|
||
|
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,266
|
|
| 29.09.2021, 14:00 | |
|
0
|
|
|
Заблокирован
|
||
| 29.09.2021, 15:06 | ||
![]() Добавлено через 1 минуту как то в одной игре у меня блочило слово вполне нормальное слово с буквосочетанием "бля"
0
|
||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||||||||
| 29.09.2021, 15:30 [ТС] | ||||||||
0
|
||||||||
| 29.09.2021, 15:30 | |
|
Помогаю со студенческими работами здесь
20
Написать следующие функции в двух вариантах Работа с файлами. Нужно сделать функции сохранения и загрузки данных в двух вариантах: текстовый и бинарный режим Скорость выполнения.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|