32bit on Windows 64-bit uses Wow64.. which has a bit of overhead as an 
emulation layer. I believe it's the same one they use for ARM64 too. I can only 
guess at how optimally it works performance-wise, but compiling a couple 
thousand-liner utils was annoying. You could (at least on the machine I was 
using at the time) watch it just sit there briefly before any compiler output 
happened.

Your test would probably have similar results, but the nuisance for me was the 
delay in the 32bit version actually starting.
________________________________
From: fpc-devel <fpc-devel-boun...@lists.freepascal.org> on behalf of Nikolay 
Nikolov via fpc-devel <fpc-devel@lists.freepascal.org>
Sent: Thursday, January 13, 2022 1:40:33 AM
To: fpc-devel@lists.freepascal.org <fpc-devel@lists.freepascal.org>
Cc: Nikolay Nikolov <nick...@gmail.com>
Subject: Re: [fpc-devel] I've asked this before, but perhaps I wasn't specific 
enough that time: what do I *personally*, specifically need to do to ensure 
that a native Windows 64-bit build winds up on the FPC website for the next 
release?



On 1/13/22 02:31, Ben Grasset via fpc-devel wrote:
On Wed, Jan 12, 2022 at 7:38 AM Martin Frb via fpc-devel 
<fpc-devel@lists.freepascal.org<mailto:fpc-devel@lists.freepascal.org>> wrote:

The downloads provided by Lazarus are also NOT a "pure, native 64-bit
download". Only the "fpc.exe" and the non-cross "ppc64.exe" are native
64 bit.

As I said, I do not know, what is currently provided by the Fpc
"combined 32-/64-bit download".
No Idea, if any of the fpc/ppc executable in this download are already
64-bit.

Every single executable that actually originates from the FPC toolchain (so 
like `fpc.exe`, `ppcx64.exe`, `ppudump.exe`, `pas2js.exe`, `h2pas.exe`, and so 
on) contained in the current "lazarus-2.2.0-fpc-3.2.2-win64.exe" installer that 
the Lazarus website directs to when you click "Download Now" on a system 
running 64-bit Windows IS currently 64-bit. I just verified this myself. That 
particular installer does not include any cross compilers at all, also (the 
ones to target 32-bit Windows from 64-bit come in the smaller 
"lazarus-2.2.0-fpc-3.2.2-cross-i386-win32-win64.exe" installer.

On Wed, Jan 12, 2022 at 7:55 AM Tomas Hajny via fpc-devel 
<fpc-devel@lists.freepascal.org<mailto:fpc-devel@lists.freepascal.org>> wrote:
Wrong - applies only to the Win64 target, whereas e.g. 64-bit Linux
(supported by the same compiler targetting 64-bit code) supports
extended. This means that compiling source code with this compiler may
result in a different binary as soon as there's e.g. an extended
contstant included in the source code, or any compile-time calculations
in this precision need to be performed.

Isn't this specifically the kind of thing that the `FPC_SOFT_FPUX80` define 
solves? FPC does not even let you go from 64-bit Windows to 32-bit targets if 
that define isn't active IIRC, so presumably the same thing could be made the 
case in other scenarios if it's something people are widely concerned about.

In any case, people who want native 64-bit Windows toolchains want them pretty 
much exclusively for use on 64-bit Windows to target 64-bit Windows, and will 
install any cross-compilers secondarily if they have a use for them. The 
32-bit-to-64-bit Windows FPC toolchain is not a perfect drop-in replacement. 
Based on testing I did locally previously, it's not as fast as the native 
64-bit one,

Really? Are you sure, because I just tested make cycle on Linux and the results 
are:

i386:

real    1m1.032s
user    0m53.194s
sys    0m5.572s

x86_64:

real    1m32.651s
user    1m21.486s
sys    0m9.414s

So, the 64-bit compiler is 50% slower. This is on an AMD Ryzen 9 5900X 12-core 
processor, 128 GB RAM and an SSD.

I haven't tested in Windows, but it would be very strange and suspicious if the 
results are very different. I would double check if that's really the case and 
also try some things, like disabling any antivirus programs that might be 
slowing down your computer by scanning every exe file, produced by the compiler.

and additionally there are other things to keep in mind like the 4GB RAM limit 
on 32-bit (which I have in fact seen more than one user on the Lazarus forums 
run into with larger projects, none of whom were using the 32-bit executables 
"on purpose").

A bug report with steps to reproduce would probably be nice.

Nikolay
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to