Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> память Perl 
:(
    Опции темы
zomber
Дата 7.5.2011, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 7.5.2011

Репутация: нет
Всего: нет



подскажите,

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

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

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

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

PM MAIL   Вверх
dixoNICH
Дата 7.5.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



миллион точно можно)
PM MAIL   Вверх
Pfailed
Дата 7.5.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



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


--------------------
PM MAIL   Вверх
xoma
Дата 7.5.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



"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 может "сожрать" всю (почти) память, все зависит от задачи и от разработчика =)
PM MAIL WWW   Вверх
DurRandir
Дата 8.5.2011, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



На 32х битных системах вы сможете съесть 2-3 ГБ) А дальше адресного пространства не хватит)
PM   Вверх
dixoNICH
Дата 8.5.2011, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
vadiml
Дата 8.5.2011, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 5
Всего: 7



dixoNICH
Можно было задать ограничение на максимальную память для программы в /etc/security/limits.conf
для всех юзеров, для чего-то конкретно
PM MAIL Jabber   Вверх
Pfailed
Дата 8.5.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



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

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

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


--------------------
PM MAIL   Вверх
Suppir
Дата 10.5.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Не так давно столкнулся с проблемой. В 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


Это сообщение отредактировал(а) Suppir - 10.5.2011, 11:10
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0870 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.