URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 72952
[ Назад ]

Исходное сообщение
"Тематический каталог: Использование памяти в Perl при работе..."

Отправлено auto_topic , 30-Ноя-10 16:04 
Обсуждение статьи тематического каталога: Использование памяти в Perl при работе с большими строками (perl hash array memory debug)

Ссылка на текст статьи: http://www.opennet.me/base/dev/perl_memory.txt.html


Содержание

Сообщения в этом обсуждении
"Использование памяти в Perl при работе с большими строками (perl hash array memory debug)"
Отправлено chorny , 30-Ноя-10 16:04 
Статья созана человеком не понимающим как функционирует выделение памяти в Perl. Perl не отдает память системе. Поэтому при измерении кажетсяы что внутри Perl памятть не высвобождается. Упомянутый perl 5.4 уже давно не актуален, осенью 2010-го вышел perl 5.12.2, где многое изменено.

$1,$2,...,$&,$`,$' - из этих переменных не рекомендуется использовать только $&,$`,$', в perl 5.10 добавлены новые возможности которые позволяет сделать их использование эффективнее.


"Использование памяти в Perl при работе с большими строками (..."
Отправлено rshadow , 28-Фев-11 12:16 
Там же написано, статья 2002 г. =)

"Использование памяти в Perl при работе с большими строками (..."
Отправлено chorny , 28-Фев-11 14:57 
> Там же написано, статья 2002 г. =)

Все что я написал, было известно и в 2002-ом году. И уже тогда был Perl 5.8.


"Использование памяти в Perl при работе с большими строками (..."
Отправлено Аноним , 03-Июл-12 13:46 
>Статья созана человеком не понимающим как функционирует выделение памяти в Perl. Perl не отдает память системе. Поэтому при измерении кажетсяы что внутри Perl памятть не высвобождается. Упомянутый perl 5.4 уже давно не актуален, осенью 2010-го вышел perl 5.12.2, где многое изменено.

Тут кроме статьи надо понимать что избавление от лишнего копирования это не только уменьшает память но и увиличивает скорость исполнения. Про использование @_ под функцией - это полезно. Также полезно вызывать явно undef поскольку это особождает часть памяти, но остается кэш на повторное использование. Честно говоря я так и не понял до конца в каких случаях отдается память полностью, поскольку тестирую один и тот же код в в некоторых случаях увидел практически полную отдачу памяти (оставалась под интерпретатор пара метров при длинах переменной в несколько сотен мегабайт). Тема заинтересовала - надо копнуть.