|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.11.2015, 14:29 | #1 |
Пользователь
Регистрация: 16.09.2015
Сообщений: 10
|
Обработка файлов 1-5 гигабайт
Добрый день!
Столкнулся с большой проблемкой. Есть парсер, но обрабатывает куски данных не больше 10-12 мегабайт. При 50 начинает подвисать, с потугами но и их обрабатывает. После 100 - без шансов. А обрабатывать нада 1 гиг... Подскажите пожалуйста как реализовать загрузку таких объемных данных в софт? Читал что то про mapping но не понял принцип. Буду рад помощи |
25.11.2015, 14:35 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а вы, надеюсь, не в мемо грузите?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.11.2015, 14:58 | #3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Читай построчно-поблочно без всяких Memo или StringList и парси. Тоже не за милисекунды, но виснуть не будет. Mapping не для этого нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
25.11.2015, 15:15 | #4 |
Пользователь
Регистрация: 16.09.2015
Сообщений: 10
|
|
25.11.2015, 15:32 | #5 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
25.11.2015, 17:19 | #6 |
Пользователь
Регистрация: 16.09.2015
Сообщений: 10
|
|
25.11.2015, 17:30 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
есть старые добрые паскалевские ReadLn,Reset,Assign(правда AssignFile теперь)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
25.11.2015, 20:23 | #8 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,761
|
Если работа с файлом, то TFileStream Вам в помощь.
|
26.11.2015, 09:07 | #9 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
а то ТС щас наговнокодит и будет материть TFileStream и того, кто посоветовал. Я б юзал буфер, скажем, в 128кбайт. А ещё лучше - дополнительный TMemoryStrem как буфер, откуда уже б и TStriingList.LoadFromStream(); А ещё есть TStringStream... Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
26.11.2015, 10:18 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
min@y™, имхо, это не имеет особого значения.
var b : byte; FileStream1.ReadBuffer(b) и var buffer:array[0..128*1024-1] of byte; FileStream1.ReadBuffer(buffer) дадут НЕ ПРИНЦИПИАЛЬНУЮ разницу в быстродействии (хотя, конечно, я бы тоже заморочился с чтением в буфер). Проверите? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обработка файлов | 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 18:53 |