|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||
Ускорить работу22.03.2023, 20:04. Показов 1411. Ответов 26
Метки нет (Все метки)
Всем привет.
Написал программу, но скорость работы не радует, от слова совсем. Подскажите, как сделать шустрее. Пока что без разделения на потоки. Вот код
Входные параметры: папка и файл с регулярными выражениями. Сканируется корневая папка( которая входная), если в ней есть папка с именем config, то тогда открываем её и берём за основу с работой файл с именем имя следующей папки. И читаем это содержимое. Потом циклом крутим содержимое файла с регулярными выражениями и содержимое того файла. Если совпало, то кладём в вектор, чтобы потом спросить у пользователя удалять их или нет. Если удалять, то необходимо их удалить и удалить записи в файле, который лежит в папке config. Если папки config нет, то делаем рекурсивный поиск всех файлов и папок,делаем аналогичный список, прочтеному файлу, и так же проверяем его, так же спрашиваем удалить или нет. Если удалить, то просто удаляем, ниоткуда больше исключать не надо. Так вот кручение 2х векторов занимает что то много времени, аж до 2х минут.
0
|
||||||
| 22.03.2023, 20:04 | |
|
Ответы с готовыми решениями:
26
Ускорить работу функций Ускорить работу программы Как ускорить работу? |
|
фрилансер
6482 / 5708 / 1132
Регистрация: 11.10.2019
Сообщений: 15,222
|
|
| 23.03.2023, 11:54 | |
|
NEED-A-JOB, blackeangel, к слову, регулярка - это обычно довольно медленно. Для частного случая можно расстараться и сделать ручную реализацию, если упор делается именно на скорость
Добавлено через 1 минуту но для начала можно флажок optimize опробовать (объект регвыра надо будет создать вне циклов, конструктор будет медленный)
1
|
|
|
118 / 86 / 35
Регистрация: 07.11.2022
Сообщений: 355
|
||
| 23.03.2023, 12:04 | ||
|
Не по теме: Алексей1153, с++ и регулярка для меня вообще несовместимые вещи )
0
|
||
|
фрилансер
6482 / 5708 / 1132
Регистрация: 11.10.2019
Сообщений: 15,222
|
|
| 23.03.2023, 12:08 | |
|
NEED-A-JOB, а что так? Очень удобная и стандартная вещь. Когда скорость не особо важнА, регексп просто сияет ( разбор данных с модема, разбор логов). Но когда упор на скорость (а это не так уж часто требуется, да и случаи обычно частные), то вручную, это да
1
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
||||||||
| 23.03.2023, 14:23 [ТС] | ||||||||
|
NEED-A-JOB, то что тут происходит - дело понятное. Это регулярка по выявлению в строке что то типа
Так скомпилить - вроде могут все, код весь тут на форуме, создать текстовый файл и прописать него 3-4 слова. И потом это все натравить на собранную программу(путь к любой папке, с любыми файлами и путь к текстовому файлу со строками) вроде не так сложно, сделать даже не закрывая VS или другой ide. Добавлено через 9 минут NEED-A-JOB, bash + find + grep ![]() Добавлено через 2 часа 2 минуты NEED-A-JOB, Спасибо за отказ в регулярках для скорости. За правки в коде. Вопрос о не работе string::find снят. Всё заработало ![]() Проблема оказалась там, где её не ждали - файл с которого читали подстроки оказался в непонятной кодировке, а не utf-8, как предполагалось изначально. Добавлено через 1 минуту Алексей1153, флажок попробовал, профита сильного не получилось, всё равно более 111769 ms, без регулярок - 8 сек
1
|
||||||||
|
фрилансер
6482 / 5708 / 1132
Регистрация: 11.10.2019
Сообщений: 15,222
|
|
| 23.03.2023, 14:24 | |
|
blackeangel, я сразу сказал, что регулярки - тормоз
0
|
|
|
19 / 10 / 1
Регистрация: 22.07.2015
Сообщений: 908
|
|
| 23.03.2023, 14:27 [ТС] | |
|
Алексей1153, но они такие удобные, особенно когда надо найти неизвестно что, но известно, что примерно вот так,а может вот, а может вот и вот так и вот и вот эдак )
0
|
|
|
фрилансер
6482 / 5708 / 1132
Регистрация: 11.10.2019
Сообщений: 15,222
|
|
| 23.03.2023, 14:29 | |
|
blackeangel, они потому и удобные, что гибкие. Гибкость == потеря скорости. Если нужно искать что-то специализированное быстро (и где гибкость не нужна), то делается "ручной" парсер
2
|
|
| 23.03.2023, 14:29 | |
|
Помогаю со студенческими работами здесь
27
Задача про рюкзак - ускорить работу программы Подскажите пожалуйста как ускорить работу программы! Можно ли как нибудь ускорить работу цикла for? Как ускорить работу (поиск вхождений подстроки)? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|