Граница размера файла, когда его лучше архивировать

claygod

Новичок
Граница размера файла, когда его лучше архивировать

Есть текстовый файл, с которым скрипт работает, размер файла растёт,
становится мегабайт и больше. Меня интересует, при каком размере уже
нужно архивировать файл и потом скачивать архивированный, распаковывать
и уже потом работать с ним. Т.е. где Рубикон (понятно, что примерно) ?
 

dimagolov

Новичок
там, где время скачивания превышает допустимое.
а что за задача, что надо текстовый файл в начале скачивать, а потом обрабатывать? может весь файл там совсем и не нужен, а достаточно скачать то, что обновилось?
 

claygod

Новичок
Этот файл - индекс другого, гораздо большего файла....
Теоретически можно построчно файл перебирать, но как мне кажется, это будет гораздо медленнее.
 

dimagolov

Новичок
текстовый индекс на мегабайты другого текстового файла....
что-то в консерватории надо подправить (с)
 

vovanium

Новичок
claygod
Судя по тому что пишешь про теоретическое построчное перебирание, то по ходу ты весь файл в память читаешь, в таком случае не важно будет ли он заархивирован или нет. Тут зависит от того как именно ты используешь этот файл.
А особых тормозов с большими файлами нет, к примеру у меня парсер SQL, за 0.6 секунды разбирал файл 800 МБ (т.е. разбирал на отдельные запросы, только не отправлял в MySQL), скорость обработки доходила до 1,5 ГБ/сек (файл на RAM-диске находился), естественно файл не читался весь в память :)
 

claygod

Новичок
vovanium, всё верно, поскольку файл измеряется к примеру мегабайтом, то построчно (а строк там тысячи), я его перебирать не хочу, проще целиком в память загрузить. Судя по всему, архивирование тут будет неуместно, поскольку выигрыш во времени считывания будет совсем незначительный.
 

vovanium

Новичок
claygod
Чтение всего файла в память, имеет смысл, если тебе нужно много с ним операций производить, например, у меня при определении страны по IP, можно кэшировать базу в память.
Если ты обрабатываешь файл последовательно, то скорее всего последовательное чтения по блокам будет быстрее.
На примере того же SQL-парсера, простое чтение того файла с помощью fgets длится около 7 секунд (больше 4 млн. строк), в то время как с fread читает и разбивает на запросы за 0,6 сек.
 
Сверху