powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый парсер в потоках
25 сообщений из 37, страница 1 из 2
Быстрый парсер в потоках
    #39955594
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, а какие есть подходы к быстрому парсингу текста? Не занимался этим никогда. Для простого парсинга я использую TPerlRegEx, но когда важна скорость, это видимо не подходит?
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955604
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блочное чтение, конечный автомат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955614
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

Что парсишь?
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955631
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О потоках говорить рановато.

Надо сначала исследовать возможности однопоточного парсера. И улучшить его.
Для начала выкинув Perl и регулярки.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955635
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster, базу RIPE. Регуляркой это просто..
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955636
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, ну это я понял со слов Dimitry Sibiryakov. Конечный автомат.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955651
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может там никаких регулярок не надо?
https://www.ripe.net/manage-ips-and-asns/db/support/querying-the-ripe-database
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955656
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, когда формат JSON, то конечно не нужен, но у меня в другом формате, в старом текстовом. Не спрашивайте почему. Так нужно
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955657
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример текста ?
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955664
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev,

Объект inetnum

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
inetnum:         217.150.32.0 - 217.150.32.255
netname:         TTK-OFFICE-NET
descr:           Transtelecom Office Network
descr:           Moscow, Russia
country:         RU
admin-c:         KTTK-RIPE
tech-c:          KTTK-RIPE
status:          ASSIGNED PA
remarks:         INFRA-AW
mnt-by:          TRANSTELECOM-MNT


Объект route

Код: plaintext
1.
2.
3.
route:           217.150.32.0/19
descr:           RU-TRANS-TELECOM-20010213
origin:          AS20485
mnt-by:          TRANSTELECOM-MNT
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955665
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,

вот эту реализацию регэксов рекомендовали по скорости, можешь попробовать посмотреть:
https://github.com/BeRo1985/flre/
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955670
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да тут без регулярных выражений делается за 5 минут ...
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955672
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev, формат может меняться, многие данные национальные, формат не строгий относительно пробелов и табуляции. Вам может и 5 минут ))
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955674
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этой задаче действительно регулярка не очень нужна. Ну тоесть она нужна
так-же как пушка при стрельбе по мелким птичкам.

Вы простой строковой операцией решите эту задачу быстрее.

Только разбейте файл на
1) Строки
2) Проперти вида {ключ} ":" {значение}

Это можно сделать с помощью базового функционала строк в любом ЯП.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955679
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, разбитие, приведение это долго
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955680
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb, я знаю что такое Ripe-Db.

Это оуенный файл длиной в несколько гиг который никогда ни при каких обстоятельствах не помещается
в одну строку. Тебе придется его парсить частями.

Надеюсь ты это понимешь и не переоцениваешь возможности Regex-механики. Она вообще создавалась
не для таких задач. Не для ETL.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955681
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbразбитие, приведение это долго

"Не верю!" (с)

Код показывай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955684
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, его еще написать надо
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955685
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, конечно парсить частями
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955686
cptngrb,

Количество строк = количество элементов в массиве
Key : Value

Делятся по : А значит нам надо найти только : и скопировать лево и право. И стандартный trim. И загнать всё в массив.


Ты можешь кстати просто хранить ключи, и на них индексы. Что бы в онлайне получать знания из файла, для экономии самой памяти.


Это на миллиард таких элементов должно работать моментально.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955689
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
cptngrbразбитие, приведение это долго

"Не верю!" (с)

Код показывай.

cptngrb
Dimitry Sibiryakov, его еще написать надо

Оптимизация несуществующей программы с целью повышения её производительности или компактности - эта тема страниц на десять обсуждения потянет, как бы тема про FreeAndNil не потонула позабытой.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955691
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Для начала выкинув Perl и регулярки.

Может оказаться, что более оптимальным будет выкинуть Delphi.
Perl хорошо подходит для обработки текстов.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955692
Alibek B.,

Надо выкинуть программиста!
Регулярку ещё надо написать

Вдруг у него регулярка на 100 символов. И в придачу ещё 5 вызовов за раз на парс
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955694
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Dmitry Arefiev, формат может меняться, многие данные национальные, формат не строгий относительно пробелов и табуляции. Вам может и 5 минут ))

Формальный синтаксис есть ? Или это биг дата :)
Ну даже если исходить из умозрительных вариаций синтаксиса и того что ты сказал, то особо это ничего не меняет. Хорошо, не "5 минут", но пол дня.
...
Рейтинг: 0 / 0
Быстрый парсер в потоках
    #39955695
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbего еще написать надо

Тогда с какого перепою ты решил, что "это долго"?

SetTextBuf с буфером в 32/64к - ускорит чтение в разы. Разбиение на строки делается ReadLn
автоматически. Pos, конечно, помедленнее strchr() будет, но вряд ли заметно. Copy и trim -
да, тут могут быть вопросы из-за выделения/копирования памяти и в принципе можно поплясать
с бубном. Если действительно прижмёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрый парсер в потоках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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