[fpc-devel] FPC 3.0 slow strings

Michael Van Canneyt michael at freepascal.org
Tue Feb 23 13:37:17 CET 2016

On Tue, 23 Feb 2016, Maciej Izak wrote:

> Hi!
> I am active user of mORMot and Zeos, I'd like to forward here important
> message from Google+:
> https://plus.google.com/+ABouchez/posts/eGyvNBsrM9b
> Any chance to improve this? :
> Original message (author: A. Bouchez):
> FPC 3.0 Strings are SLOW...
> Did you experience this? After introducing of code pages to the String
> process, we discovered a huge slowdown at execution.
> http://wiki.freepascal.org/FPC_Unicode_support is confusing... We were not
> able to find a compilation mode in which the behavior was close to Delphi.

Define 'close to Delphi', because what exactly do you expect ? 
The implementation, to our knowledge, is Delphi compatible.

(except that in recent Delphis, string = widestring)

> For instance, the code page of the string constants in source code are
> broken. Or in case of string comparison, RawByteString are converted to the
> current system code page, so are dead slow, and broke most of existing code.
> We had some discussion with ZEOS authors, and they are as concerned as we
> are. See http://synopse.info/forum/viewtopic.php?pid=19498#p19498
> The FPC RTL introduced clearly some performance regressions. A lot of
> hidden charset conversion is done at runtime, for no benefit, and breaking
> all code expectations.

This is definitely something to take into account.

But we cannot simply work out of the blue:

Please submit bug reports with simple examples of cases where you think
unnecessary code conversions are done.


More information about the fpc-devel mailing list