Performance of hashes and associative arrays

Raphaël Jakse raphael.jakse at gmail.com
Fri Nov 9 23:55:17 PST 2012


Hello,

Thanks for this complete answer. I will take a look to your code.
Additionally, Ali gave me a really interesting link about hashing, good 
practices, what is efficient, etc. If you didn't read it, it might 
interest you. Here it is:

http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx

Le 07/11/2012 13:10, Dan a écrit :
> On Wednesday, 7 November 2012 at 06:38:32 UTC, Raphaël Jakse wrote:
> [...]
>> Ali agreed that concatenating strings each time would indeed be
>> inefficient. He thought we might cache the value (third solution) :
>
> Interesting about caching the hashcode and on large classes could save
> you. But isn't the signature shown const? Would that compile?

Indeed, I didn't tested this code, I just wanted to explicit what I 
wanted to say. Thank you for the notice.

> Also, what
> if you change the strings - you get the wrong hash? I suppose you could
> limit writes to properties and null the hashcode on any write.

Yes, good question and good idea, I think I would do it this way. I 
didn't think about it.

>
>> Questions are :
>>  - what is the most efficient solution, and in which case ?
>
> No string concatenation is good. I think a single pass on all important
> data (in most cases is all the data) is the goal.

I'm not sure I understood well. You wanted to say that string 
contatenations are good, right ?

I was thinking about a hash function that would take several arguments 
and hash them together. That would let take in account more than one 
string in the hash while avoiding concatenation.

>[...]
>
> Thanks
> Dan
>



More information about the Digitalmars-d-learn mailing list