[fpc-devel] LEA instruction speed

J. Gareth Moreton gareth at moreton-family.com
Tue Oct 10 12:11:49 CEST 2023


Ooo, that might be just what we need.  Thank you Stefan.

Kit

On 10/10/2023 10:57, Stefan Glienke via fpc-devel wrote:
> Be my guest making https://github.com/spring4d/benchmark compatible for all platforms you need it for.
>
>> On 10/10/2023 11:13 CEST J. Gareth Moreton via fpc-devel <fpc-devel at lists.freepascal.org> wrote:
>>
>>   
>> Thanks Tomas,
>>
>> Nothing is broken, but the timing measurement isn't precise enough.
>>
>> Normally I have a much higher iteration count (e.g. 1,000,000), but I
>> had reduced it to 10,000 because, coupled with the 1,000 iterations in
>> the subroutines themselves, would have led to 1,000,000,000 passes and
>> hence would take in the region of five to ten minutes to complete for a
>> 16 MHz 386, for example.  Rika's suggestion of running as many
>> iterations as needed until, say, 5 seconds elapses, would help but the
>> timing measurements would cause a lot of latency and will be imprecise
>> on very slow routines.  Still, let's see if 100,000 gives better results
>> for you.
>>
>> Kit
>>
>> On 10/10/2023 09:57, Tomas Hajny wrote:
>>> On 2023-10-09 20:51, J. Gareth Moreton via fpc-devel wrote:
>>>
>>>
>>> Hi Kit,
>>>
>>>> I updated the "blea" test in the merge request so it now displays the
>>>> processor brand name on x86_64; however, it is not fetched under i386
>>>> because CPUID was not introduced until later 486 processors. I've
>>>> attached it to this e-mail if anyone wants to take a look to ensure I
>>>> haven't broken something.
>>> I don't know what's broken, but the results vary so much on a fast
>>> machine that they are unusable for any measurement from my point of
>>> view (standard 3.2.2 compiler, compiled with -O4 and running under MS
>>> Windows this time). Sometimes the ADD version shows 0.0 ns/call,
>>> sometimes the LEA version shows 0.0 ns/call (32-bits) or 0.1 ns/call
>>> (64-bits). See the attached results (the CPU is only displayed for the
>>> 64-bit compilation, but it's obviously the same CPU).
>>>
>>> Tomas
>>>
>>>
>>>> On 09/10/2023 18:01, J. Gareth Moreton via fpc-devel wrote:
>>>>> Thank you very much!  That processor is built on the Excavator
>>>>> architecture and lines up with the flag I put in the merge request
>>>>> (i.e. it has the "fast LEA" hint).
>>>>>
>>>>> I honestly didn't expect this much testing feedback, so thank you all!
>>>>>
>>>>> Gareth aka. Kit
>>>>>
>>>>> P.S. I'm tempted to extend the test slightly to actually name the
>>>>> CPU automatically.
>>>>>
>>>>> On 09/10/2023 15:40, Jean SUZINEAU via fpc-devel wrote:
>>>>>> My results:
>>>>>> jean at First-Boss:~/temp$ cat /proc/cpuinfo | grep "model name"
>>>>>> model name    : AMD A6-7480 Radeon R5, 8 Compute Cores 2C+6G
>>>>>> jean at First-Boss:~/temp$ /usr/bin/fpc blea.pp
>>>>>> Free Pascal Compiler version 3.2.2 [2021/07/09] for x86_64
>>>>>> Copyright (c) 1993-2021 by Florian Klaempfl and others
>>>>>> Target OS: Linux for x86-64
>>>>>> Compiling blea.pp
>>>>>> Linking blea
>>>>>> 95 lines compiled, 0.2 sec
>>>>>> jean at First-Boss:~/temp$ ./blea
>>>>>>     Pascal control case: 5.1 ns/call
>>>>>>   Using LEA instruction: 0.5 ns/call
>>>>>> Using ADD instructions: 0.8 ns/call
>>>>>> jean at First-Boss:~/temp$
>>>>>>
>>>>>> _______________________________________________
>>>>>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>>>>>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>>>>>
>>>>> _______________________________________________
>>>>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>>>>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>>>>
>>>> _______________________________________________
>>>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>>>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel_______________________________________________
>> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>


More information about the fpc-devel mailing list