| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Парсер медленно работает |
| Автор: Rod 19.10.2006, 18:54 |
| Есть файл - около 2 GB Его обрабатывает парсер. На обработку каждой строки уходит до 40ms(параметров в строке довольно много) Как ускорить работу парсера хотя бы раза в 3? Сейчас Используются следующие Функции : fseek fgetc strstr и др Можно ли подгрузить кусок файла в память, а потом с ним работать? Если да - то как? |
| Автор: MAKCim 19.10.2006, 21:19 | ||||
mmap/munmap тебе поможет man 2 mmap читай напрямую без библиотечных функций через read и большими блоками
ужас |
| Автор: bsa 20.10.2006, 17:41 |
| Rod Для начала попробуй использовать fgets (fscanf). Думаю это значительно ускорит выполнение программы. Если же этого будет недостаточно, то остаются варианты работы через буфер или mmap, как советует MAKCim, но в этом случае реализция сложней. |
| Автор: bilbobagginz 21.10.2006, 02:22 |
| иногда проблемы оптимизации встают в результате столкновения скорости кода программы с использованием оперативной памяти. поэтому, у меня другой вопрос: всякие любвеобильные к памяти програмки надо кормить соответствующим железом. Сколько у вас, дорогой человек, памяти для этих игр с парсингом ? как много памяти ипользует ваш код ? насколько вы знакомы с параллелизацией кода, с параллельным и распределённым программированием ? |
| Автор: sergejzr 21.10.2006, 13:16 | ||
Вот примерчик для прохождение по файлу буффером
|