Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потоки [D6, WinXP]


Страницы:   1 2

anarhi ©   (2004-08-06 10:52:00) 

Привет всем,
проблема такая: есть файл 120 Мбайт (база данных в текстовом виде)читаю определенную часть данных провожу над ними манипуляции, записываю результат в файл, в итоги получается файл такогоже размера, на это уходит 1 час времени и процессор работает на 100%. Как разгрузить процессор и уменьшить время работы, я слышал что-то про потоки и нити а как сделать не знаю подскажите и по подробнее. О разгрузке внутреннего алгоритма речи быть не может. Система Athlon XP 1800+ RAM 384.  


Smithson   (2004-08-06 13:03:00) [1]

Слушайте, 120 мег - это же смешно. StringList сожрет под него ну максимум 200 мег. Поставь на машину 512 Мег и работай как хочешь! (если оптимизировать не хочешь).


Мастер   (2004-08-06 12:38:00) [2]

Да зачем тебе все сразу загружать?
Тебе надо загружать последовательно необходимую порцию строк и обрабатывать их. После обработки выводить в другой файл.


Romkin   (2004-08-06 12:37:00) [3]

Абсолютно бессмысленно :)
Ты же можешь поблочно обрабатывать? Зачем извращаться?


anarhi   (2004-08-06 12:35:00) [4]

Загрузить в память 120 Мбайт и работать с ним как с массивом типа string.


Digitman   (2004-08-06 12:33:00) [5]


> anarhi   (06.08.04 12:30) [32]



> ну и как?


ты не в цирке и не в богодельне, сударь !

хочешь помощи ? излагай подробно (!!) логику, которая тебе нужна в конечном итоге !


anarhi   (2004-08-06 12:30:00) [6]

REA
ну и как?


REA   (2004-08-06 12:29:00) [7]

120Мб - маленький файл.


WondeRu   (2004-08-06 12:10:00) [8]

сначала, я бы все перегнал в две таблицы (по одной для каждого файла), а потом в цикле через Select писал выходной файл!


Romkin   (2004-08-06 12:08:00) [9]

>а как со 120 Мбайтным?
Ты его кусками читаешь? Так и читай.
Посмотри TStringList, особенно Names & Values, Sorted и тд.
Наверняка подойдет.


anarhi   (2004-08-06 12:05:00) [10]

WondeRu
а как со 120 Мбайтным?


anarhi   (2004-08-06 12:04:00) [11]

Сейчас исходников привести немогу я на работе а они дома.


WondeRu   (2004-08-06 12:03:00) [12]

создаешь для 2мб файла физическую таблицу (т.е в MS SQL или IB) или вирт. таблицу (TMemoryTable)! Уверяю, это поможет!


Мастер   (2004-08-06 12:01:00) [13]

>anarhi

Ты бы привел куски кода - как ты работаешь с файлами и как идет
работа с данными.


Romkin   (2004-08-06 11:59:00) [14]

НУ загнать двухметровый файл в TStringList и отсортировать - примитивно, зато как искать-то будет!


Digitman   (2004-08-06 11:58:00) [15]


> Romkin ©   (06.08.04 11:56) [22]


ты сейчас насоветуешь ему) ... надумает загнать все 120 мб в TStringList и получит тот же отлуп , что и при GetMem(120mb)..)


Romkin   (2004-08-06 11:56:00) [16]

По-другому - надо брать другие структуры данных. Их полно. Например, тот же TStringList, он заточен под хранение строк


Digitman   (2004-08-06 11:56:00) [17]


> anarhi   (06.08.04 11:53) [16]


чего ж ты тогда лапшу вешаешь, что структурированный он у тебя ?

если нет возможности структурировать его перед обработкой, создай индексы для быстрого доступа к записям или загони исх.файл в настоящуюБД и работай уже с БД, а не с исх.файлом


anarhi   (2004-08-06 11:55:00) [18]

Запись ищется последовательно.


Romkin   (2004-08-06 11:55:00) [19]

Да скорее всего каждый раз файл заново читается :)))
http://www.delphimaster.ru/articles/dyntable/index.html
Может, таки не зря это здесь есть?


anarhi   (2004-08-06 11:54:00) [20]

Rokmin
да так а как по другому?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо