Geoff Howard wrote:
> >
> > To come to a conlusion I did a simple performance test:
> > - Creating 10000 random keys (strings) where each character is a value
> > between 0 and 9
> > - Hashing the 10000 values
> > - Putting the strings into the cache (a HashMap)
> > - Putting the Hashed values into another cache (a HashMap)
> > - Searching for all values in the string cache
> I guess you mean for each value (in a loop)?

Exactly.

>
> > - Searching for all values in the hashed cache (this requires
> > of course
> > rehashing the values)
> >
> > And this is the result:
> > Start key generation
> > Created 10000 strings with average length 169
> OK,
> > Start hashing
> > Hashed: 120 ms
> 120 for all 10,000 -> The hashing function takes .012 ms per call
> on average
Yes.

>
> > Creating cache with Strings
> > Created: 60 ms
> 60 ms for all 10,000 -> .006 ms on average
Yes, this means all 10,000 strings are put into the hash map

> > Creating cache with longs
> > Created: 30 ms
> same, .003 ms for longs (faster)
Yes.

> > Testing strings
> > Strings: 10 ms
> Object = mapWithStrings.get(KeyString) -> 10 ms for all 10000? -> .001 ms
> per lookup average? (wow)
Yupp.

> > Testing hashed strings
> > Hashed strings: 131 ms
> Object = mapWithHashes.get(hashCreate(KeyString)) -> 131 ms for
> all -> .0131
> ms per lookup average.

Yes.

>
> >
> > So, looking up the hashed information is slower as the values
> > have to be
> > rehashed. But
> > putting strings into the cache is slower.
> But putting strings in only takes twice the time -- taking them out is ten
> times faster and happens more often (right?)

Should be, yes.

>
> > From the test above it seems that using strings is still a
> > little bit faster
> > than
> > using hashed values.
> > Or did I oversee something?
> I had been assuming that if the keys were not objects (strings)
> but integers
> that there could be a better datastructure than HashMap.  I
> haven't had much
> time to think about it today but will tonight.  Any ideas?

In general this is right, but not for the cocoon caching. The tests
I did are for one part of the compound key. I wanted to know if
it is faster to use a string or a hashed value for this one part.
The complete cache key is constructed from several parts, so
this can never be a simple number.

Carsten


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to