Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.11.2015, 15:29   #1
Emelrouse
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
Репутация: 10
По умолчанию Обработка файлов 1-5 гигабайт

Добрый день!
Столкнулся с большой проблемкой. Есть парсер, но обрабатывает куски данных не больше 10-12 мегабайт. При 50 начинает подвисать, с потугами но и их обрабатывает. После 100 - без шансов. А обрабатывать нада 1 гиг... Подскажите пожалуйста как реализовать загрузку таких объемных данных в софт? Читал что то про mapping но не понял принцип. Буду рад помощи
Emelrouse вне форума   Ответить с цитированием
Старый 25.11.2015, 15:35   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,003
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

а вы, надеюсь, не в мемо грузите?
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 25.11.2015, 15:58   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,995
Репутация: 6725
По умолчанию

Читай построчно-поблочно без всяких Memo или StringList и парси. Тоже не за милисекунды, но виснуть не будет. Mapping не для этого нужен
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 25.11.2015, 16:15   #4
Emelrouse
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вы, надеюсь, не в мемо грузите?
Нет, гружу в StringList. Это критично?
Просто раньше его хватало.
Emelrouse вне форума   Ответить с цитированием
Старый 25.11.2015, 16:32   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,995
Репутация: 6725
По умолчанию

Цитата:
Это критично?
Критично когда гигабайты. Он в память все пишет
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 25.11.2015, 18:19   #6
Emelrouse
Пользователь
 
Регистрация: 16.09.2015
Сообщений: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Читай построчно-поблочно без всяких Memo или StringList и парси.
Это как? В этом и есть мой вопрос)
Emelrouse вне форума   Ответить с цитированием
Старый 25.11.2015, 18:30   #7
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,003
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

есть старые добрые паскалевские ReadLn,Reset,Assign(правда AssignFile теперь)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 25.11.2015, 21:23   #8
FaTaL
Профессионал
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,728
Репутация: 458
По умолчанию

Если работа с файлом, то TFileStream Вам в помощь.
FaTaL вне форума   Ответить с цитированием
Старый 26.11.2015, 10:07   #9
min@y™
Цифровой кот
Профессионал
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Адрес: 1600, пенсильвания-авеню, п.г.т. верхний Вашингтонск, 8126 км от МКАД, от поста ГАИ - налево.
Сообщений: 7,664
Репутация: 2449

icq: 100500
skype: kick-ass
По умолчанию

Цитата:
Если работа с файлом, то TFileStream Вам в помощь.
СогласенЪ. Главное - не читать файл побайтно
а то ТС щас наговнокодит и будет материть TFileStream и того, кто посоветовал.
Я б юзал буфер, скажем, в 128кбайт. А ещё лучше - дополнительный TMemoryStrem как буфер, откуда уже б и TStriingList.LoadFromStream();
А ещё есть TStringStream...
__________________
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума   Ответить с цитированием
Старый 26.11.2015, 11:18   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,099
Репутация: 5675
По умолчанию

min@y™, имхо, это не имеет особого значения.
var b : byte;
FileStream1.ReadBuffer(b)

и
var
buffer:array[0..128*1024-1] of byte;
FileStream1.ReadBuffer(buffer)

дадут НЕ ПРИНЦИПИАЛЬНУЮ разницу в быстродействии (хотя, конечно, я бы тоже заморочился с чтением в буфер).

Проверите?
Serge_Bliznykov на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка файлов Pepsik Помощь студентам 1 10.07.2011 21:35
С++. Обработка файлов teach Помощь студентам 5 02.04.2011 16:41
Обработка файлов FauLL Общие вопросы C/C++ 1 23.06.2010 21:34
Обработка файлов. Morzik8 Помощь студентам 2 17.05.2010 20:05
Обработка файлов Си++ modulrev Помощь студентам 22 19.02.2009 19:53


17:46.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.