Работа с большими файлами

Discussion in 'Болталка' started by zl0y, 6 Oct 2007.

  1. zl0y

    zl0y Banned

    Joined:
    13 Sep 2006
    Messages:
    371
    Likes Received:
    270
    Reputations:
    109
    Есть огромный файл (40 гигов с чем то),в нем построчно есть значения вида:
    1111
    2222
    3333
    4444
    aaaa
    bbbb
    cccc
    ccdd
    fffffff
    и.т.д
    Мне нужно рассортировать эти значения по файлам,причем имя файла куда запишется строка,будет равна первым 3 символам.
    Пробывал сам написать прогу,но работает уж очень медленно,я так посчитал,что потребуеться больше 2 дней чтобы рассортировать этот файл на более маленькие. :)

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

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    Может как вариант.? Сначала не сортируй инфу на файлы своей прогой, а просто списывай кусок файла сначала и до определенного места, и сохраняй этот кусок в другом файле, далше следующий кусок - следующий файл. Короче разбиваем на маленькие кусочки, не сортировав. После этого через сортировку прогоняем все полученые маленькие файлы.
     
  3. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    потому что писать прогу надо не на делфи
    я, если честно, не порубил какой у тебя там формат файла и что надо сделать, но сказать одно могу точно - максимально эффективно будет придумать самый быстрый алгоритм и зокодировать его хэкерским осенблерным кодесом
     
    #3 KEZ, 6 Oct 2007
    Last edited: 6 Oct 2007
  4. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    короч я бы завел структуру, открывал исходный файл маппингом. а дальше так
    проходим по памяти открытой. ищем символ перевода строки. как нашли пиишем в труктуру точку начала строки и длину
    таких элементов штук 500. после чтения всех 500 строк записываем их в файлы. в цикле. потом очищаем стурктуру(тупо ставить индекс текущей структуры = 0) и продолжаем читать следующие 500 элементов

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

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    824
    Reputations:
    368
    Рациональное решение - стереть его! =))
     
  6. Dronga

    Dronga ВАША реклама ТУТ!!

    Joined:
    1 Jul 2005
    Messages:
    575
    Likes Received:
    239
    Reputations:
    249
    И восстанавливать по частям по нужным файлам =)