Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Ivan Pechorin                        2:5020/400     23 Jan 2003  18:52:07
 To : Ivan Pechorin
 Subject : Re: perl tips and tricks for mod_perl ?
 -------------------------------------------------------------------------------- 
 
 Ivan Pechorin wrote:
 
 > Прочитал статью о (не)эффективном использовании
 > памяти перлом при работе с большими строками и
 > удивился:
 > http://www.samag.ru/img/uploaded/samag14245-0.pdf
 > 
 > Первая реакция была примерно такой: "Вроде простой
 > язык, а чтобы нормально работать надо устраивать
 > извращения почище чем в С"
 > 
 > А теперь я ОЧЕHЬ хочу услышать Ваше мнение по
 > поводу изложенных в этой статье проблем (при
 > программировании под mod_perl)
 > 
 
 Уточнение:
 
 http://www.samag.ru/img/uploaded/samag14245-0.pdf
 - это полный текст статьи
 
 http://www.samag.ru/ru/articles/last/news_current.shtml?2002/12/20021226-5.html
 - это лишь начало статьи
 
 Hа всякий случай вставляю кусок из начала статьи, формулирующий основную 
 проблему:
 
   В процессе тестирования и экспериментов я выявил общие проблемы, 
 возникающие в Perl при работе с большими данными, и нашел способы их 
 решения. После соответствующего переписывания, мой скрипт стал 
 потреблять адекватное количество памяти, а утечка памяти прекратилась. 
 Результаты своих исследований я предлагаю вашему вниманию. Итак, имеют 
 место 2 основные общие проблемы. ПРОБЛЕМА I Свободное употребление 
 Perl-средств для работы со строками - regexp'ов, substr, конкатенаций 
 типа $a.$b или "$a$b" - приводит к порождению лишних копий строки, т.е. 
 там, где по логике вещей алгоритму должно хватить 2 MB, будет потрачено 
 5 или 10 MB. ПРОБЛЕМА II Если не предпринять специальных усилий, то 
 после завершения Perl-функции рабочая память, израсходованная в этой 
 функции, HЕ БУДЕТ освобождена! (Ситуация совершенно отличная от 
 традиционной практики в языках без сборки мусора типа C++ или Pascal, 
 когда все рабочие переменные, созданные внутри функции, уничтожаются при 
 выходе из функции.) Это не так важно в обычном CGI-скрипте, исполняемом 
 внешним интерпретатором Perl. По завершении скрипта процесс будет 
 полностью уничтожен вместе со всей своей памятью. Hо в mod_perl или 
 FastCGI, или в независимых приложениях, или серверах на Perl это очень 
 существенно. Обратите внимание - описанная проблема HЕ ЕСТЬ истинная 
 утечка памяти. Встроенный сборщик мусора действительно обеспечивает 
 утилизацию ненужных переменных. Просто он делает это не совсем так, как 
 можно было бы ожидать. А именно: занятая память будет использована 
 повторно ПРИ СЛЕДУЮЩЕМ ВЫЗОВЕ той же самой функции, т.е. многократные 
 повторные вызовы функции не будут приводить к постепенному исчерпанию 
 RAM - явлению, которое традиционно называется утечкой памяти. Зато 
 многократные вызовы приведут к другому: со временем будет занят 
 наибольший объем памяти из всех, которые были нужны при различных 
 вариантах вызова этой функции. В моем случае, после того как мои 
 Perl-функции один раз обработали HTML-страницу размером 10 MB и 
 соответствующий процесс с mod_perl "съел" 100 MB, он так и продолжал 
 всегда занимать 100 MB, хотя все последующие обрабатываемые страницы 
 были небольшими. Внешне такое поведение очень похоже на утечку - объем 
 памяти, занятый процессом, никогда не уменьшается, но постепенно 
 медленно увеличивается - по мере того как этому процессу случайно 
 попадаются данные все большего размера.
 
 --- ifmail v.2.15dev5
  * Origin: Golden Telecom (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 perl tips and tricks for mod_perl ?   Ivan Pechorin   23 Jan 2003 18:42:47 
 Re: perl tips and tricks for mod_perl ?   Ivan Pechorin   23 Jan 2003 18:52:07 
 Re: perl tips and tricks for mod_perl ?   Andrew Alakozow   23 Jan 2003 21:11:08 
 Re: perl tips and tricks for mod_perl ?   Ivan Pechorin   24 Jan 2003 00:36:19 
 Re: perl tips and tricks for mod_perl ?   Andrew Alakozow   24 Jan 2003 15:03:41 
 Re: perl tips and tricks for mod_perl ?   Ivan Pechorin   25 Jan 2003 01:49:56 
 Re: perl tips and tricks for mod_perl ?   Ivan Pechorin   25 Jan 2003 01:56:02 
 Re: perl tips and tricks for mod_perl ?   Ivan Frolcov   24 Jan 2003 01:04:51 
 Re: perl tips and tricks for mod_perl ?   Konstantin Tokar   24 Jan 2003 12:34:17 
 Re: perl tips and tricks for mod_perl ?   Ivan Frolcov   24 Jan 2003 12:51:23 
 Re: perl tips and tricks for mod_perl ?   Konstantin Tokar   24 Jan 2003 13:53:11 
 Re: perl tips and tricks for mod_perl ?   Ivan Frolcov   24 Jan 2003 15:18:03 
 Re: perl tips and tricks for mod_perl ?   Konstantin Tokar   24 Jan 2003 15:36:10 
 Re: perl tips and tricks for mod_perl ?   Ivan Frolcov   24 Jan 2003 17:22:17 
 Re: perl tips and tricks for mod_perl ?   Ivan Pechorin   25 Jan 2003 01:56:01 
Архивное /ru.perl/8990d84745aa.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional