Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Болталка (https://forum.antichat.xyz/forumdisplay.php?f=46)
-   -   Работа с большими файлами (https://forum.antichat.xyz/showthread.php?t=50605)

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

И восстанавливать по частям по нужным файлам =)


Время: 10:47