Просмотр полной версии : Работа с большими файлами
Есть огромный файл (40 гигов с чем то),в нем построчно есть значения вида:
1111
2222
3333
4444
aaaa
bbbb
cccc
ccdd
fffffff
и.т.д
Мне нужно рассортировать эти значения по файлам,причем имя файла куда запишется строка,будет равна первым 3 символам.
Пробывал сам написать прогу,но работает уж очень медленно,я так посчитал,что потребуеться больше 2 дней чтобы рассортировать этот файл на более маленькие. :)
Вот возникает вопрос: Может кто нибудь софт какой нибудь предложит или рациональное решение :)
Red_Red1
06.10.2007, 04:21
Может как вариант.? Сначала не сортируй инфу на файлы своей прогой, а просто списывай кусок файла сначала и до определенного места, и сохраняй этот кусок в другом файле, далше следующий кусок - следующий файл. Короче разбиваем на маленькие кусочки, не сортировав. После этого через сортировку прогоняем все полученые маленькие файлы.
потому что писать прогу надо не на делфи
я, если честно, не порубил какой у тебя там формат файла и что надо сделать, но сказать одно могу точно - максимально эффективно будет придумать самый быстрый алгоритм и зокодировать его хэкерским осенблерным кодесом
короч я бы завел структуру, открывал исходный файл маппингом. а дальше так
проходим по памяти открытой. ищем символ перевода строки. как нашли пиишем в труктуру точку начала строки и длину
таких элементов штук 500. после чтения всех 500 строк записываем их в файлы. в цикле. потом очищаем стурктуру(тупо ставить индекс текущей структуры = 0) и продолжаем читать следующие 500 элементов
[aaded]
kez, против. нада писать на си и компилить интеловским компилером. но здесь важнее алгоритмическая оптимизация. ибо все равно ест запись на диск, а быстрее чем запись работать прогу н получится.
PEPSICOLA
06.10.2007, 05:50
Рациональное решение - стереть его! =))
И восстанавливать по частям по нужным файлам =)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot