At the moment, I'm experimenting with overhauling the x86_64 optimizer to see if I can reduce the number of passes through a block of code - my hope is to greatly increase the speed of the compiler without sacrificing the optimisations performed under -O1 and -O2. At present, I've attempted to not modify i386 because I wish to use it as a control case (i.e. do my changes break other platforms?)
It's probably not worthy of the bounty, but I'm enjoying the challenge to seeing if I can improve the overall speed in places. Gareth aka. Kit
On Fri 16/11/18 22:58 , "Florian Klämpfl" sent:
Florian Klämpfl wroteAm 16.11.2018 um 23:36 schrieb Jonas Maebe: > On 16/11/18 22:44, Florian Klämpfl wrote: >> 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): > > You can improve performance further by devirtualising all method calls
using wpo. First compile it with -FWvipri.wpo
> -OWDEVIRTCALLS,OPTVMTS and next with -Fwvipri.wpo
-OwDEVIRTCALLS,OPTVMTS (at least on my machine it gives a small boost,
> and makes the results also more stable). > > Since I only have a preliminary llvm version (with Dwarf EH) running on
macOS, I can't provide a direct Kylix
> comparison. The versions below are both x86-64. As mentioned before, a
32 bit FPC/LLVM is still quite a way off.
Show quoted text 5 lines
NumberOfChannels=6, BufferPackets=5000,
> NumberOfSynchroThreads=4 >
.................................................................................................
Show quoted text 7 lines
IR) and -Fwvipri.wpo -OwDEVIRTCALLS,OPTVMTS (no
> LLVM link-time optimization): > > $ time ./vipribenchmemcache_nodeps_llvm > VipriBenchThreaded - RunningTimeSeconds=5, TestCount=100, StartSeq=0,
NumberOfChannels=6, BufferPackets=5000,
> NumberOfSynchroThreads=4 >
.................................................................................................................
Show quoted text 26 lines
Hmmm, needs a few more of my changes to make work, though it should work if used only with the benchmark.
