[fpc-devel] Fwd: Re: An optimization suggestion for FPC

Benito van der Zander benito at benibela.de
Sun Jun 28 13:22:24 CEST 2020


Hi J. Gareth,

that is a really important optimization.

Especially with new record management operators. I am going to wrap 
almost all my variables in records, so they will be automatically 
initialized.

I have suggested it in the bug tracker, but it was closed, because they 
say the bug tracker is not for suggestions: 
https://bugs.freepascal.org/view.php?id=34915

Bye,
Benito
On 28.06.20 12:31, J. Gareth Moreton wrote:
>
> So someone reached out to me directly again asking for an FPC 
> optimisation.  Now I want to see if this is possible to optimise and 
> won't break something or be annoying specific.
>
> Gareth aka. Kit
>
> -------- Forwarded Message --------
> Subject: 	Re: An optimization suggestion for FPC
> Date: 	Sun, 28 Jun 2020 11:30:09 +0100
> From: 	J. Gareth Moreton <gareth at moreton-family.com>
> To: 	Okoba <okobapatino at protonmail.com>
>
>
>
> Heh, I'm honoured you came to me directly.  I'll see if I can work 
> anything out.  A lot of it is down to where the record is stored.  If 
> it's on the stack, an optimisation shouldn't be difficult, but if it's 
> on the heap somewhere, then it will be a bit more difficult.  Do you 
> have your C++ example, and which C++ compiler did you use?
>
> Gareth aka. Kit
>
> On 28/06/2020 11:06, Okoba wrote:
>> Hi,
>> It seems you are interested in optimizing FPC and I have a trouble 
>> with it and wanted to check it with you if I may.
>> I like to have a way to pass the record variable and inc it without 
>> losing speed. I wrote a sample and ran it with FPC trunk in Win64 and 
>> the times are commented. I should say the times for Delphi for the 
>> same target is the same. And tried a C++ version and all the times 
>> are almost the same and near 250.
>> I tried many ways including absolute, pointer, custom asm functions, 
>> custom functions with const and var params and the are almost always 
>> slower than the first loop.
>> So is there anyway to have a custom Inc function that get he record 
>> variable and inc it without losing speed in compare to the system inc?
>>
>> Regards.
>>
>>
>>
>> program Project1;
>>
>> uses
>>   SysUtils;
>>
>> type
>>   TTest = record
>>     P: int64;
>>   end;
>>
>>   procedure Test;
>>   var
>>     V: TTest;
>>     P: int64;
>>     T: UInt64;
>>     i, C: integer;
>>   begin
>>     C := 1000 * 1000 * 1000;
>>
>>     T := GetTickCount64;
>>     P := 1;
>>     for i := 1 to C do
>>       Inc(P);
>>     WriteLn(GetTickCount64 - T); //266
>>
>>     T := GetTickCount64;
>>     V.P := 1;
>>     for i := 1 to C do
>>       Inc(V.P);
>>     WriteLn(GetTickCount64 - T); //1400
>>
>>     T := GetTickCount64;
>>     V.P := 1;
>>     P := V.P;
>>     for i := 1 to C do
>>       Inc(P);
>>     P := V.P;
>>     WriteLn(GetTickCount64 - T);  //250
>>   end;
>>
>> begin
>>   Test;
>>   ReadLn;
>> end.
>>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> 
> 	Virus-free. www.avast.com 
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> 
>
>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20200628/b4e2fe3b/attachment.htm>


More information about the fpc-devel mailing list