[fpc-devel] The 15k bounty: Optimizing executable speed for Linux x86 / LLVM

Florian Klämpfl florian at freepascal.org
Fri Nov 16 22:44:57 CET 2018


Am 16.11.2018 um 20:22 schrieb Simon Kissel:
> Hi guys,
> 
> turns out that in our real-life scenario there sadly aren't big
> improvements yet. Might be due to the exception handling, but
> we haven't profiled it yet. As said we have seen better improvements
> in simpler benchmark code - but this benchmark here is what
> really matters for us.
> 
> Please find the benchmark here - the ZIP includes a Kylix-built
> binary.
> 
> https://share.nerdherrschaft.net/f/2ac772f0327e4840a533/?dl=1
> 
> Here are some results from a Dualcore i7 with 2 cores and 4 HT,
> 32 bit:
> 
> Kylix:
> Time: 5015ms = 9770688 pkts/s = 14610 MB/s
> ./vipribenchmemcache_nodeps_kylix  5.06s user 0.01s system 99% cpu 5.119 total
> 
> FPC 3.0.4:
> Time: 5052ms = 8016627 pkts/s = 11987 MB/s
> ./vipribenchmemcache  5.07s user 0.01s system 97% cpu 5.206 total
> 
> FPC 3.3.1 trunk (SVN Rev 40300):
> Time: 5040ms = 8035714 pkts/s = 12016 MB/s
> ./vipribenchmemcache_nodeps  5.07s user 0.02s system 97% cpu 5.207 total
> 
> Benchmark results for ARM will follow.

With some compiler tuning and a few tricks (two changes to the code and hand-simulated peephole optimizations, but I
think these tricks can also the compiler do):

florian at ubuntu32:~$ ./vipribench
VipriBenchThreaded - RunningTimeSeconds=5, TestCount=100, StartSeq=0, NumberOfChannels=6, BufferPackets=5000,
NumberOfSynchroThreads=4
..............................................................................................
Time: 5005ms = 9390609 pkts/s = 14042 MB/s
florian at ubuntu32:~$ ./vipribenchmemcache_nodeps_kylix
VipriBenchThreaded - RunningTimeSeconds=5, TestCount=100, StartSeq=0, NumberOfChannels=6, BufferPackets=5000,
NumberOfSynchroThreads=4
.............................................................................................
Time: 5018ms = 9266640 pkts/s = 13856 MB/s

;)




More information about the fpc-devel mailing list