powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый парсер текста
25 сообщений из 65, страница 1 из 3
Быстрый парсер текста
    #40007027
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ко мне на сервер приходят текстовые сообщения по сети. И мне по определенному шаблону нужно вытаскивать ФИО из них. Какие способы посоветуете?

Пример сообщения:

Покупатель совершил платеж 1000 р. ФИО = "Петров Иван Фёдорович"
Произошел возврат покупки id#1000231 ФИО = "Петров Иван Фёдорович" дата возврата = 21.09.2020

Можно через регулярные выражения, можно через pos

Вот если таких сообщений миллионы? Если важна скорость обработки?
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007028
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас придет Оптимизатор.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007030
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.10.2020 16:53, cptngrb пишет:
>
> Какие способы посоветуете?

возьми стандартный TParser за основу и допили напильником.
он однопроходный и способен работать с потоками и буферами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007031
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
И мне по определенному шаблону нужно вытаскивать ФИО из них.

Про шаблон уже что-то известно или он еще не определен?
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007033
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
пока нет
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007035
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
известно, что длина сообщения не больше 300 символов
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007038
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.10.2020 17:24, cptngrb пишет:
>
> известно, что длина сообщения не больше 300 символов

тогда чо ты паришься?!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007047
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,
еще раз, как быстрее это делать?
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007048
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.10.2020 17:46, cptngrb пишет:
> еще раз, как быстрее это делать?

чо ты ЗАРАНЕЕ паришься?!
на таких объёмах практически пофиг.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007049
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbкак быстрее это делать?

С твоими объёмами - как угодно, pos сойдёт. Репу будешь чесать если сервер упрётся в
загрузку CPU.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007051
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. KISS
2. Premature optimization is the root of all evil.

Определись с данными, возьми Pos, проверь скорость, сравни с ожидаемой нагрузкой...
А потом делай выводы
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007147
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
wadman,
пока нет

То есть нужно найти решение задачи, условий для которой нет.

Эпик.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007218
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
Я спросил про подход. Не знал, что это так сложно.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007219
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Из Delphi-библиотек самая быстрая это CachedTexts (сейчас входит в состав Tiny.Library)
Но в целом согласен. Действительно ли нужна производительность
Я работал с большими объёмами, там нужна была производительность. Нужна ли в твоём случае - вопрос
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007241
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU, мне нужна. Конкретные данные я показать не могу, но смысл понятен. Есть сообщение. В нем в определенном порядке идет ФИО, дата/время и стоимость. Их мне надо вытянуть. В потоках всякие inttostr не очень хорошо работают. При парсинге у меня куча строк, которые потом нужно переводить в число, дату. StrToDate тоже тяжелая функция, EncodeDate уже лучше
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007243
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbStrToDate тоже тяжелая функция

Эй, в первом сообщении ты на полном серьёзе рассматривал регэкспы, а тут вдруг StrToDate,
оказывается, "тяжёлая"...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007244
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
В потоках всякие inttostr не очень хорошо работают.

Ну так возьми ММ с поддержкой многопоточности. FastMM5, например.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007249
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

А там как раз идея в том, чтобы отказаться от менеджера памяти
Ты скармливаешь кусок данных, они кешируется, и дальше работаешь со строками, ссылаясь на имеющийся буфер
Как раз там делается StrToInt, StrToDate и т.д.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007410
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Можно через регулярные выражения


DiRegExp довольно быстрая библиотека
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007412
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, TPerlRegExp (на базе нее TRegExp) тоже быстрая, как показали тесты, времени уходит больше не на сам парсинг, а на преобразование строк к конкретным типам данных (числа, даты). А так как сообщение - это массив байт, то мне оказалось намного быстрее работать непосредственно с байтами, чем сообщение приводить к строке -> поиск в строке -> перевод подстрок к типам данных.
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007560
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

если уж совсем позарез, то надо лексер генерить - тынц

там как раз регулярки, лексергенератор закомпилит их в табличку переходов, и работать это будет железно
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007563
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

И меня здесь упрекают в том, что слишком усложняю решение )
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007564
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

оно как бы не сложно при определённом опыте, вопрос надо ли "будить дракона"

многие же жалуются, что знания из универа им в жизни не понадобились, хороший повод вспомнить :-)
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007566
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Я конечно не уверен на 100%, но мне кажется решение на основе CachedTexts будет быстрее лексера, не смотря на то, что лексер в теории может быть очень быстр
...
Рейтинг: 0 / 0
Быстрый парсер текста
    #40007568
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

O(N^2) в ХУДШАЙШЕМ случае, но это надо ОЧЕНЬ-ОЧЕНЬ постараться - такой вариант даже придумывать долго, а в целом около O(N)
...
Рейтинг: 0 / 0
25 сообщений из 65, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый парсер текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]