Предварительное выделение памяти для хэша
Проблема
Требуется заранее выделить память под хэш, чтобы ускорить работу программы — в этом случае Perl не
придется выделять новые блоки при каждом добавлении элемента. Окончательный размер хэша часто
бывает известен в начале построения, и эта информация пригодится для повышения быстродействия.
Решение
Присвойте количество пар «ключ/значение» конструкции keys(%ХЭШ):
# Выделить в хэше %hash память для $num элементов.
keys(%hash) = $num;
Комментарий
Новая возможность, впервые появившаяся в Perl версии 5.004, может положительно повлиять на
быстродействие вашей программы (хотя и не обязательно). В хэшах Perl и так применяются общие ключи,
поэтому при наличии хэша с ключом "Apple" Perl уже не выделяет память под другую копию "Apple"
при включении этого ключа в другой хэш.
# В %users резервируется место для 512 элементов.
keys(%users) = 512;
Внутренние структуры данных Perl требуют, чтобы количество ключей было равно степени 2. Если написать:
keys(%users) = 1000;
Perl выделит для хэша 1024 «гнезда». Количество ключей не всегда равно количеству гнезд.
Совпадение обеспечивает оптимальное быстродействие, однако конкретное соответствие между ключами и
гнездами зависит от ключей и внутреннего алгоритма хэширования Perl.
См. такжеОписание функции keys
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|