powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Парсер медленно работает
6 сообщений из 6, страница 1 из 1
Парсер медленно работает
    #34068030
Родион Ю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть файл - около 2 GB
Его обрабатывает парсер.
На обработку каждой строки уходит до 40ms(параметров в строке довольно много)
Как ускорить работу парсера хотя бы раза в 3?

Сейчас Используются следующие Функции :
fseek
fgetc
strstr
и др

Можно ли подгрузить кусок файла в память, а потом с ним работать?
Если да - то как?
...
Рейтинг: 0 / 0
Парсер медленно работает
    #34068070
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родион ЮЕсть файл - около 2 GB
Его обрабатывает парсер.
На обработку каждой строки уходит до 40ms(параметров в строке довольно много)
Как ускорить работу парсера хотя бы раза в 3?


Тяжело сказать. Слишком мало информации для размышлений.

Родион Ю
Сейчас Используются следующие Функции :
fseek
fgetc
strstr
и др

Можно ли подгрузить кусок файла в память, а потом с ним работать?
Если да - то как?

Приблизительно так:
Выделить в куче большой буффер, а лучше 2 .
Открыть файл с параметром O_DIRECT, чтобы буферизация ФС не мешала.
использовать seek & read.

Одной нитю читать файл в первый буффер,
другой парсить из второго. И так далее по кругу.

Смотреть какая нить работает медленнее и ее оптимизировать.
...
Рейтинг: 0 / 0
Парсер медленно работает
    #34068071
Мурзилка12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Родион ЮЕсть файл - около 2 GB
Его обрабатывает парсер.
На обработку каждой строки уходит до 40ms(параметров в строке довольно много)
Как ускорить работу парсера хотя бы раза в 3?

Сейчас Используются следующие Функции :
fseek
fgetc
strstr
и др

Можно ли подгрузить кусок файла в память, а потом с ним работать?
Если да - то как?

как 40 мс намерил, надеюсь общее время работы разделить на кол-во строк?

длина строки какая?

лучше пример. чё там парсить.
вообще, за 40 мс, можно слона обмерить:)

если считывание идет по символьно, то нужно как минимум по строчно, а вообще в данном случае вообще нужно кусками хватать.

совершенно недавно тут кто-то выкладывал класс для парсинга текстовых файлов, поищи.
...
Рейтинг: 0 / 0
Парсер медленно работает
    #34068152
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родион Ю
На обработку каждой строки уходит до 40ms(параметров в строке довольно много)
Как ускорить работу парсера хотя бы раза в 3?

Попробуйте прогнать профайлер и понять на какой процедуре (или функции) парсер долго думает.

P.S. А вообще-то лучше-б увидеть сорс.
...
Рейтинг: 0 / 0
Парсер медленно работает
    #34068628
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Родион ЮМожно ли подгрузить кусок файла в память, а потом с ним работать?
Если да - то как?

Не можно, а нужно. Про это уже написали, но вот, пример из жизни:

Писал тестовую программу, которая считывает 2 файла и пишет в другой попеременно по байту из каждого. Т.к. программа тестовая, даже не стал заморачиваться и считывал по одному байту, и их, по одному записывал. :) С файлами примерно по 300 КБ, на это уходило секунд 7. Как оказалось, это программа не на 2-3 запуска, а пока будет использоваться, то сделал считывание по 1КБ и запись 2-х. На глазок даже не удавалось определить, какое время стало требоваться на выполение операции.

У вас, конечно, такого ускорения не будет, но об считывании блоками, стоит задуматься. Поддерживаю предложение от onstat-.
...
Рейтинг: 0 / 0
Парсер медленно работает
    #34069246
nts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nts
Гость
Более того, учитывая объем обрабатываемых файлов(2 ГБ), стоит задуматься об определении оптимального размера считывамых блоков, учитывая файловую систему и ОС.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Парсер медленно работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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