GCC Conundrum

GCC Conundrum

Shlomi Fish shlomif at iglu.org.il
Sun Jun 7 01:24:24 IDT 2009


I'm getting strange results (and counter-intuitive ones) when trying to 
compile a program using gcc-4.4.0-3mnb2 on Mandriva Linux Cooker.

The program in question is:

https://svn.berlios.de/svnroot/repos/fc-solve/trunk/fc-solve/source

(you can checkout it using "svn co").

And I'm getting the following benchmark timings: (in seconds)

{{{{{{
dump:126.027262926102
dump-2:124.866523981094
dump-3:125.149952888489
dump-4:125.010930776596
dump-aft-reboot:127.221956968307
dump-flip:123.10272693634
dump-flip-2:121.934360027313
dump-flip-3:121.98522400856
dump-old:130.334769010544
dump-old-aft-reboot:122.411857128143
}}}}}}

dump-old is of an old revision before I rebooted. dump-old-aft-reboot is the 
same version after I reboot the computer.

The dump-flip's are after doing "./Tatzer -l p4b" and then "make" (and "make 
install") and then running:

 ./freecell-solver-range-parallel-solve 1 32000 500 -l gi

The dump-[234] are after doing "./Tatzer -l p4b --without-flip". What this 
flag does is define the FCS_WITHOUT_CARD_FLIPPING macro, which in turn toggles 
some #ifndef's in the code that eliminate a lot of code. I verified that with 
"--without-flip" binaries are smaller.

My question is: why is the --without-flip binaries slower than the ones with 
the flipping logic? So far my best bet is that with the flipping logic enabled 
(but underused) the code aligns to have fewer cache misses and that it is just 
a co-incidence that this is the case.

I'll appreciate any insights.

Regards,

	Shlomi Fish

-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
The Case for File Swapping - http://xrl.us/bjn7i

God gave us two eyes and ten fingers so we will type five times as much as we
read.



More information about the Linux-il mailing list