Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



5.14. Presizing a Hash


5.14.1. Problem





You want to preallocate memory for a hash
to speed up your program so Perl won't have to incrementally allocate
memory each time a new entry is added to the hash. Often you know the
final size of a hash before you start building it up, and it's
possible to use this information to speed up your program.

5.14.2. Solution


Assign
the number of key-value pairs your hash will have to
keys %HASH.

# presize %hash to $num
keys(%hash) = $num;

5.14.3. Discussion


This feature may or may not improve
your performance. Perl already shares keys between hashes, so if you
already have a hash with "Apple" as a key, Perl
won't need to allocate memory for another copy of
"Apple" when you add an entry whose key is
"Apple" to another hash.

# will have 512 users in %users
keys(%users) = 512;

Perl's internal data structures require the number of keys to be a
power of 2. If we had said:

keys(%users) = 1000;

Perl would have internally allocated 1024 "buckets" for the hash.
Keys and buckets aren't always one to one. You get the best
performance when they are, but the distribution of keys to buckets is
dependent on your keys and Perl's (immutable) hash algorithm.

5.14.4. See Also


The keys function in
perlfunc(1) and Chapter 29 of
Programming Perl;
Recipe 4.3



5.13. Hashing References5.15. Finding the Most Common Anything




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875