Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Tie::File |
Автор: Aleshka 19.12.2007, 09:20 | ||
Добрый день! Решил для создания скрипта использовать модуль Tie::File, для того чтобы представить файл в виде массива.
Но заметил то что при выполнении данного кода происходит загрузка процессора до 50% и потребления памяти до 20 Мб. При этом хотелось бы отметить что файл занимает всего 4 Мб. А что будет если файл увеличится до 20 Мб??? Я посмотрел можно ограничить размер выделяемой памяти. но как мне увеличить быстродействие выполенения данного скрипта не знаю. |
Автор: amg 19.12.2007, 11:10 |
Так ли нужно для анализа лога загружать в массив весь файл? Обычно в логах далеко отстоящие строки друг с другом не связаны. |
Автор: Aleshka 19.12.2007, 13:06 | ||
amg вы абсолютон правы, не нужно анализировать весь лог. Но мне интересно было посмотреть на этот модуль как он работает и в его описании указано что в данном случае массив в память не заносится. Но быстродействия уж очень хромает, по крайне мере в моем случае. |
Автор: amg 19.12.2007, 13:28 |
Tie::File, как я понимаю, нужен когда файл в виде массива не помещается в память, и необходим быстрый доступ к произвольным строкам файла. По нынешним временам 20 или даже 200 Мб файл спокойно можно поместить в обыкновенный массив. |
Автор: Aleshka 21.12.2007, 11:25 |
Да можно поместить в массив и 200 Мб, но это мне кажется будет не лучший вариант решения. Хотя, каждому свое! Но мне как начинающему инетересно рассмотреть и другие варианты решения. |
Автор: tishaishii 19.1.2008, 14:48 |
СУБД |
Автор: vadiml 20.1.2008, 12:11 |
я много-мегабайтные файлы прохожу простым считыванием open FL "file"; while my $str (<FL>) { просмотр строки } close FL; работает очень быстро, при том что разбор строк бывает очень сложный. При последовательном движении по файлу загонять весь файл в массив не надо, обычно в памяти хранится массив с окончательными данными, да и то если их нельзя сразу же направить на вывод в другой файл. обычно при такой обработке у меня загрузка на cpu 100%, но памяти потребляет немного |