Re: [fpc-pascal] Passing around Pascal strings vs AnsiString

2023-06-15 Thread Peter B via fpc-pascal

On 14/06/2023 14:20, Hairy Pixels via fpc-pascal wrote:

I was curious, if you had a Pascal (short) string and it was going to be passed 
around often would that be slower than using an AnsiString since its size is 
that of a pointer? I always prefer short strings when I know the length will be 
less than 255 but can copying that value between function calls add up to be 
more than the cost of allocating and reference counting the AnsiString?

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal



Value parameter passing will be slower for shortstring, but anything else is 
likely to be much faster.
Best to profile the app if concerned about this.

I recall many years ago, an application that ran about 50 times slower, 
following a Delphi upgrade.
It turned out the issue was switching the string default from pascal 
shortstring to ansi.

YMMV, but I would always use shortsting locally where length permits.


Cheers,
Peter

P.S.  Think this was D4
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Passing around Pascal strings vs AnsiString

2023-06-14 Thread Hairy Pixels via fpc-pascal



> On Jun 14, 2023, at 8:30 PM, Michael Van Canneyt via fpc-pascal 
>  wrote:
> 
> For parameters that are passed by value, the copying most likely will be
> slower since all bytes from the string must be copied to the new string.
> 
> For var parameters it should not matter.

ah yes var. What about const? surely it behaves the same as var for short 
strings as they are a fundamental type.

Regards,
Ryan Joseph

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] Passing around Pascal strings vs AnsiString

2023-06-14 Thread Michael Van Canneyt via fpc-pascal




On Wed, 14 Jun 2023, Hairy Pixels via fpc-pascal wrote:


I was curious, if you had a Pascal (short) string and it was going to be
passed around often would that be slower than using an AnsiString since
its size is that of a pointer?  I always prefer short strings when I know
the length will be less than 255 but can copying that value between
function calls add up to be more than the cost of allocating and reference
counting the AnsiString?


For parameters that are passed by value, the copying most likely will be
slower since all bytes from the string must be copied to the new string.

For var parameters it should not matter.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal