|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||||||||||||||||
Скорость выполнения функции в 2-ух вариантах26.08.2021, 23:27. Показов 4526. Ответов 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
Скорость выполнения функции
Уменьшить время выполнения работы программы, увеличить скорость выполнения |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 29.09.2021, 15:50 | |
ну_ты_ххх_ххх_красавец, ваших разделителей здесь нет, разделить похабщину можно любым символом.Вы слишком самоуверены, видимо ваша игра детская и хватит и прямого фильтра ![]() Добавлено через 1 минуту leo7755, кстати цитировать нецензур было не обязательно!
0
|
|
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||
| 29.09.2021, 16:40 [ТС] | ||
|
Игра детская, SA-MP по сети (GTA SA), поэтому мне хватит того, что есть) А вот по поводу map интересно. я занёс в vector слова - разве это не правильно?
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 29.09.2021, 16:46 | ||
Сообщение было отмечено leo7755 как решение
РешениеВопрос стоит в быстродействии. А значит способ хранения слов (в std::vector) выбран неправильный (не эффективный). Доступ к слову по ключу map или set (в данном случае предпочтительно использовать set), намного быстрей , чем проходить весь вектор(дин. массив). Почитайте про хеш функции и деревья, возможно это прояснит ситуацию.
1
|
||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|
| 29.09.2021, 17:03 [ТС] | |
|
0
|
|
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
||||||
| 01.10.2021, 02:43 [ТС] | ||||||
|
SmallEvil,
Дело обстоит так, что вместо vector применил контейнер set, а вместо регулярных - boost::split Кликните здесь для просмотра всего текста
Результат теста обрадовал. Ну явно побыстрее, чем было (~ на 20 сек.): a_IsFindForbWord(): 6365 (6 секунд) b_IsFindForbWord(): 48937 (48 секунд) Имеются ли недочёты в b_IsFindForbWord()?
0
|
||||||
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|||||||
| 01.10.2021, 08:39 | |||||||
Сообщение было отмечено leo7755 как решение
Решение
0
|
|||||||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|||||||||||
| 02.10.2021, 02:21 [ТС] | |||||||||||
a_IsFindForbWord() : 62 млс. b_IsFindForbWord() : 843 млс. 1 млн. итераций: a_IsFindForbWord() : 390 млс. b_IsFindForbWord() : 8096 млс. nonedark2008, не поверишь - не зря использовал метод count. Дополнительно поменял set на unordered_set. С ним даже быстрее вышло. Данные в отсортированном виде мне не нужны. Но осталось пару вопросов: 1) std::vector<std::string> words_split обязательно выносить на функцию? 2) можно ли оставить условие в таком виде?
0
|
|||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 02.10.2021, 03:15 | |||||||
Разделяются слова сообщения, сообщение каждый раз разное, значит и набор слов тоже. Значит это данные функции и желательно что б они были внутри по всей логике. А почему words_split объявлена как static ? И саму строку(сообщение) передавай в функцию по ссылке, много не потеряешь. Добавлено через 6 минут Странно но я не вижу твое отфильтрованное сообщение ![]() Добавлено через 4 минуты Или решил всЁ сообщение блочить ? )) Добавлено через 13 секунд Или решил всЁ сообщение блочить ? ))
1
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 02.10.2021, 03:15 | |
|
Или решил всЁ сообщение блочить ? ))
0
|
|
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|||||||||
| 02.10.2021, 05:25 [ТС] | |||||||||
Принцип работы функции такой. Игрок пишет сообщение в чат. Это сообщение проверяется через IsFindForbWord. Строка разделяется на слова*. Далее производится поиск первого встречающегося запрещённого слова из словаря forb_words. И если слово найдено, то можно например блокировать вывод такого сообщения. * словом считается набор символов (Aa-Zz, Аа-Яя), которые с одной или с двух сторон разделяются некоторыми символами-разделителями
0
|
|||||||||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|
| 03.10.2021, 16:49 [ТС] | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 03.10.2021, 16:59 | ||
|
Жесткий фильтр, одно слово не то и бан всему сообщению )
И можно не понять почему, если произойдет ложное срабатывание. Ради прироста пары милисекунд ? Она же все равно очищается (дожна) и заполняется заново при каждом вызове функции. Добавлено через 2 минуты Она часть этой функции, объявить ее static внутри функции еще понятно. Добавлено через 36 секунд И то сомнительно.
0
|
||
|
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
|
|||
| 03.10.2021, 17:23 [ТС] | |||
|
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 03.10.2021, 18:31 | ||
|
0
|
||
| 03.10.2021, 18:31 | |
|
Написать следующие функции в двух вариантах Работа с файлами. Нужно сделать функции сохранения и загрузки данных в двух вариантах: текстовый и бинарный режим Скорость выполнения.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|