[fpc-devel] Performance of string handling in trunk

Michael Schnell mschnell at lumino.de
Wed Jun 26 10:46:36 CEST 2013


On 06/26/2013 09:41 AM, Michael Schnell wrote:
>
> It shows ... how it is done.
>

Hi DoDi,

You might be inclined to enhance the test program for me and compile it 
with DXE:

AFAI understand the encoding type and as I see in 
http://wiki.freepascal.org/FPC_Unicode_support :

========================================================
type
   TRefStringRec=  packed  record
     Encoding:  word;     // encoding of string
     ElementSize:  byte;  // size in bytes of string's element (1-4)
     Ref:  SizeInt;       // number of references
     Len:  SizeInt;       // number of elements is string
   end;
========================================================

(In fact I suppose that a dummy byte is inserted to prevent that the SizeInt types are misaligned)

The encoding type information should be just before the ref counter and thus adding something like


  v1 := PInteger(j1-12);
  v2 := PInteger(j2-12);

And printing this in hex should show this information.

Now you could test in the newest DXE version what happens when assigning a normal string to a RawByteString and vice versa.

Thanks for helping out...
-Michael




More information about the fpc-devel mailing list