[fpc-devel] Are x86 optimizations across various platforms shared?

Graeme Geldenhuys graeme at geldenhuys.co.uk
Mon Feb 11 19:12:10 CET 2013


Hi,

I'm not sure how it works, but does FPC compiler optimizations for the
amd64 (x86_64) CPU's get shared across various OSes?

eg: I've read various reviews that FreeBSD benchmarks often perform
better than the same benchmarks run on Linux. It was even shown that
FreeBSD runs Linux executable faster than Linux can. I can quote the
websites if really need.

So while setting up my automated unit tests for tiOPF across my various
systems I compared the test results and timings.

NOTE:
 My host OS is FreeBSD 9.1 (64-bit) using a Intel i7-3770K @ 3.5Ghz with
16GB RAM. FreeBSD boot OS is on a 128GB OCZ Vertex 4 SSD. The rest of
the system runs off a 3x 2TB ZFS in RAID-z1 setup (similar to RAID5).
All other OS's run in VirtualBox VM sessions. I have a single Firebird
2.5 DB server running natively under FreeBSD. All file access tests run
on each OS's native file system. The Linux VM session I have is Ubuntu
10.04.4 (64-bit).

Both OS's run FPC 2.6.0 and the exact same revision of tiOPF, FPTest and
fpGUI. fpGUI is used for the GUI test runner of FPTest.

Here is the summary of the unit test results, and the times it took in
minutes and seconds.

No of tests  |  Type of Tests  |  Linux     |   FreeBSD
-------------+-----------------+------------+----------------
  151        | CSV persistence |    0:22    |    0:27
-------------+-----------------+------------+----------------
  151        | TAB persistence |    0:22    |    0:27
-------------+-----------------+------------+----------------
  151        |    XMLLight     |    0:23    |    0:26
-------------+-----------------+------------+----------------
  151        | SqlDB-Firebird  |    3:14    |    3:38
-------------+-----------------+------------+----------------
  682        | Non-Persistent  |    1:09    |    1:30
-------------+-----------------+------------+----------------


As you can see, consistently the FreeBSD tests take longer than the
Linux ones. The test project on each platform was compiled with exactly
the same compiler settings.

Also the Non-Persistent tests is 99% in-memory tests (no disk access).
So this eliminates the idea that the file systems might cause the speed
difference, though the SqlDB tests used the same DB server, and there
was still a large difference in speed.

So this got me wondering. Does FPC compiler optimizations differ between
FreeBSD and Linux, even for the same CPU type? If so, then the results
is probably understandable, because there are more Linux developers and
testers in the Free Pascal project, than for FreeBSD. Thus more working
going into Linux optimization than for FreeBSD.

If my assumption about FPC optimization is incorrect, then I'm lost for
ideas why my FreeBSD setup is so much slower than a Linux VM session
(and contrary to other benchmarks on the net).


[sorry for the long winded email]


Regards,
  - Graeme -

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/




More information about the fpc-devel mailing list