I would like to expand on the reasons for caching. If you are farmiliar with hashing, then you'll probably know that the key is processed in order to generate an index. Should this index be taken, most hash implementations will use a sub structure (probably a linked list, who's search time is O(N)) to store duplicate hashes of keys.
Perl hashes probably differ, I don't know how, but I estimate the principal is similar.
Perl hashes (not tied ones) can be evaluated in string context to see how many buckets are used and how many are allocated, for that particular hash. If you seem to be using a very small number of buckets out of the allocated ones, than you probably have an average lookup time slightly larger than O(1). Should that be the case, i'd suggest caching.
Even so, I think that
diotalevi's advice to
use Benchmark is probably the best you'll get...
Good luck!
-nuffin
zz zZ Z Z #!perl