Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > память Perl


Автор: zomber 7.5.2011, 20:47
подскажите,

сколько памяти можно безопасно "сожрать" в perl ?
безопасно в смысле, чтобы это не привело к каким-то ошибкам

вот допустим, я мне нужен хеш
число + строка до 50 символов

какого размера можно сделать хеш ?

10000 записей будет нормально ? а 100000 ? а миллион ?

Автор: dixoNICH 7.5.2011, 21:45
миллион точно можно)

Автор: Pfailed 7.5.2011, 22:04
Эксперементируйте. Devel::Size в помощь.
Вот статья недавно попалась на эту тему: http://codenode.com/perl-memory-usage/ . Про хеши там хорошо описано, сможете примерно посчитать сколько он будет занимать памяти.

Автор: xoma 7.5.2011, 22:05
"Unlike most Unix utilities, Perl does not arbitrarily limit  the size of your data--if you've got the memory, Perl can slurp in your whole  file as a single string."

perldoc perl


Perl может "сожрать" всю (почти) память, все зависит от задачи и от разработчика =)

Автор: DurRandir 8.5.2011, 00:06
На 32х битных системах вы сможете съесть 2-3 ГБ) А дальше адресного пространства не хватит)

Автор: dixoNICH 8.5.2011, 10:52
пытался создать 100-миллионный массив, пришлось перезагружать комп

Автор: vadiml 8.5.2011, 13:07
dixoNICH, 
Можно было задать ограничение на максимальную память для программы в /etc/security/limits.conf
для всех юзеров, для чего-то конкретно

Автор: Pfailed 8.5.2011, 14:02
dixoNICH, имейте ввиду, что для массивов perl выделяет память очень агрессивно. Читайте по моей ссылке выше. В худшем случае для массива из 100 миллионов элементов perl выделяет память под 200 миллионов элементов.

Добавлено через 12 минут и 55 секунд
Кстати моё беглое сравнение по потреблению памяти различными интерпретируемыми языками программирования показало следующие результаты:
языки перечислены в порядке уменьшения агрессивности поедания памяти
PHP
Perl
Ruby
Python

При этом Ruby лучше всех возвращает память системе если его попросить, Python похуже, затем идет Perl (хорошо только для скаляров), у PHP памяти практически вовсе не удалось допроситься (как для скаляров, так и для массивов)

Автор: Suppir 10.5.2011, 11:06
Не так давно столкнулся с проблемой. В Windows 7 (32 бит), да и вообще, в любой 32-битной винде, процесс Perl ограничен 2 Гб оперативной памяти. Если использует больше, то вылетает с ошибкой. Если ваш скрипт использует больше оперативки, то необходима 64-битная ОС.

Добавлено через 6 минут и 33 секунды
Прочитайте следующие темы:

Какой хеш будет меньше занимать оперативки? 
http://forum.vingrad.ru/forum/topic-325810.html


Perl out of memory, Из 4 Гб оперативки использует 2 Гб 
http://forum.vingrad.ru/forum/topic-325950.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)