[fpc-devel] Unnecessary string copy from Utf8String to AnsiString if destination CP is UTF8
Ondrej Pokorny
lazarus at kluug.net
Mon Apr 29 00:05:37 CEST 2019
On 28.04.2019 23:28, Ondrej Pokorny wrote:
> But no problem, I'll change all method parameters that expect UTF8
> strings from UTF8String to RawByteString and manually take care that
> only UTF8 data is fed to them.
OK, I changed every single UTF8String to RawByteString and the
performance gain was between 0% and 10%, depending on the test. So not
really a big gain.
But when I run the same code in Delphi, it needs less than half the time
of FPC (2 tests need 1/3 of FPC time, the third 1/2 of the time). I
compared unmodified Release modes of Delphi and Lazarus.
The tests are all about parsing and creating UTF-8 text data. FPC
doesn't need to do any conversions because I use FPC-native AnsiStrings
with CP-UTF8, and Delphi needs to convert the input/output between
UTF8/UTF16 (in Delphi I use the native UTF16 string type). Delphi is
still much much faster.
I'll have to continue searching why the performance is so much better in
Delphi...
Ondrej
More information about the fpc-devel
mailing list