[fpc-devel] Alternative parsers

Sergei Gorelkin sergei_gorelkin at mail.ru
Tue Oct 19 19:54:05 CEST 2010


Alexander Klenin пишет:
> 
> Ok, I went ahead and have taken look at the code.
> I assume you speak about TFPHashList vs TFPCustomHashTable.
> The classes are not really comparable, because they use quite
> different internal data structures.
> So instead I converted TFPHashList list to use ansistrings.
> 
> Benchmarking included 3*10^6 calls to Add and Find methods
> with the arguments of various lengths.
> 
> Average string length 5 characters:
> ShortString: 1.15 s
> AnsiString: 1.56 s
> 
> Average string length 45 characters:
> ShortString: 12.0 s
> AnsiString: 3.2 s
> 
> I agree that the first case is more relevant for the compiler,
> but still you can see that ShortStrings are clearly not always faster.
> 
I believe it's not ShortStrings per se to blame, but storing them in a large single memory block as 
it is being done in TFPHashList. Adding a lot of keys will cause many reallocations. Large size of 
the block forces memory manager to use variable-size pool, which is less efficient than using 
fixed-size blocks in case of small chunks.

Regards,
Sergei



More information about the fpc-devel mailing list