Hello all,
I have updated parallelhashlist to version 1.41..
I have modified parallelhashlist to use 128 locks, but you
have to use a hashsize inpower of 2 and greater to 1000,
how do you pass a hashsize in power of 2 to the constructor?
by using shl operation like this
trait:=TCaseinsensitiveTraits.create;;
hash1:=TParallelHashList.create(trait,1 shl 25);
Why do you have to use a power of2 ?
Please read this:
Power-of-Two Hash Table Size
"Any data structures 101 book will say choose a prime for the
number of buckets, so that the bucket's index can easily be computed
by h(k) = k mod m, where k is the key value and m is the bucket size.
While this approach is straight-forward, there are a number of issues
with it, including slow modulo performance. ConcurrentHashMap instead
uses a power-of-two rule"
http://work.tinou.com/2008/09/performance-optimization-in-concurrenthashmap.html
I am usingmodulo functions inside parallelhashlist, and using a number of locks
in power of 2, so you have to usehashsize in power of 2 , this will make the
modulo function ofthe delphi and freepascal compilers10X faster.
You can download parallelhashlist version 1.41 from:
http://pages.videotron.com/aminer/
Thank you.
Amine Moulay Ramdane.


