![]() |
Работа с большими файлами
Есть огромный файл (40 гигов с чем то),в нем построчно есть значения вида:
1111 2222 3333 4444 aaaa bbbb cccc ccdd fffffff и.т.д Мне нужно рассортировать эти значения по файлам,причем имя файла куда запишется строка,будет равна первым 3 символам. Пробывал сам написать прогу,но работает уж очень медленно,я так посчитал,что потребуеться больше 2 дней чтобы рассортировать этот файл на более маленькие. :) Вот возникает вопрос: Может кто нибудь софт какой нибудь предложит или рациональное решение :) |
Может как вариант.? Сначала не сортируй инфу на файлы своей прогой, а просто списывай кусок файла сначала и до определенного места, и сохраняй этот кусок в другом файле, далше следующий кусок - следующий файл. Короче разбиваем на маленькие кусочки, не сортировав. После этого через сортировку прогоняем все полученые маленькие файлы.
|
потому что писать прогу надо не на делфи
я, если честно, не порубил какой у тебя там формат файла и что надо сделать, но сказать одно могу точно - максимально эффективно будет придумать самый быстрый алгоритм и зокодировать его хэкерским осенблерным кодесом |
короч я бы завел структуру, открывал исходный файл маппингом. а дальше так
проходим по памяти открытой. ищем символ перевода строки. как нашли пиишем в труктуру точку начала строки и длину таких элементов штук 500. после чтения всех 500 строк записываем их в файлы. в цикле. потом очищаем стурктуру(тупо ставить индекс текущей структуры = 0) и продолжаем читать следующие 500 элементов [aaded] kez, против. нада писать на си и компилить интеловским компилером. но здесь важнее алгоритмическая оптимизация. ибо все равно ест запись на диск, а быстрее чем запись работать прогу н получится. |
Рациональное решение - стереть его! =))
|
И восстанавливать по частям по нужным файлам =)
|
| Время: 10:47 |