PDA

Просмотр полной версии : Работа с большими файлами


zl0y
06.10.2007, 03:43
Есть огромный файл (40 гигов с чем то),в нем построчно есть значения вида:
1111
2222
3333
4444
aaaa
bbbb
cccc
ccdd
fffffff
и.т.д
Мне нужно рассортировать эти значения по файлам,причем имя файла куда запишется строка,будет равна первым 3 символам.
Пробывал сам написать прогу,но работает уж очень медленно,я так посчитал,что потребуеться больше 2 дней чтобы рассортировать этот файл на более маленькие. :)

Вот возникает вопрос: Может кто нибудь софт какой нибудь предложит или рациональное решение :)

Red_Red1
06.10.2007, 04:21
Может как вариант.? Сначала не сортируй инфу на файлы своей прогой, а просто списывай кусок файла сначала и до определенного места, и сохраняй этот кусок в другом файле, далше следующий кусок - следующий файл. Короче разбиваем на маленькие кусочки, не сортировав. После этого через сортировку прогоняем все полученые маленькие файлы.

KEZ
06.10.2007, 04:29
потому что писать прогу надо не на делфи
я, если честно, не порубил какой у тебя там формат файла и что надо сделать, но сказать одно могу точно - максимально эффективно будет придумать самый быстрый алгоритм и зокодировать его хэкерским осенблерным кодесом

Ra$cal
06.10.2007, 04:33
короч я бы завел структуру, открывал исходный файл маппингом. а дальше так
проходим по памяти открытой. ищем символ перевода строки. как нашли пиишем в труктуру точку начала строки и длину
таких элементов штук 500. после чтения всех 500 строк записываем их в файлы. в цикле. потом очищаем стурктуру(тупо ставить индекс текущей структуры = 0) и продолжаем читать следующие 500 элементов

[aaded]
kez, против. нада писать на си и компилить интеловским компилером. но здесь важнее алгоритмическая оптимизация. ибо все равно ест запись на диск, а быстрее чем запись работать прогу н получится.

PEPSICOLA
06.10.2007, 05:50
Рациональное решение - стереть его! =))

Dronga
06.10.2007, 17:36
И восстанавливать по частям по нужным файлам =)