[fpc-devel] LEA instruction speed

Stefan Glienke sglienke at dsharp.org
Tue Oct 10 11:57:06 CEST 2023


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


More information about the fpc-devel mailing list