Interesting compilers’ stats

Okay, after Sebastian, I also wanted to move to GCC 4.1 and see how it was, last time it wasn’t so likely to go along with KDE.
From a feasibility of its use, it’s surely improved: KDE doesn’t get killed while using it, many parts of the tree were changed to not require support for -f(no-)stack-protector(-all) flags, and so on.

I wanted to try it with xorg-server as it’s an interesting test I already started. It has to be noted that there’s a maybe big change between the build with gcc4.0 and the one with gcc4.1: the first was using -g3, the latter -g -ggdb.
The time required for it to build something is actually longer:


Tue Jan 3 10:06:21 2006 >>> x11-base/xorg-server-1.0.1-r1
merge time: 36 minutes and 46 seconds.

 Tue Jan 24 20:27:32 2006 >>> x11-base/xorg-server-1.0.1-r1
   merge time: 1 hour, 32 minutes and 50 seconds.

The size of the final executable (stripped) is a little smaller the old one:


-rws–x–x 1 root root 1709984 2006-01-03 10:04 /usr/bin/Xorg

-rws–x–x 1 root root 1687568 2006-01-24 20:24 /usr/bin/Xorg

The size of the whole package is absolutely different, but that mainly because of the difference in CFLAGS:


x11-base/xorg-server-1.0.1-r1: 384 files, 47 non-files, 360023.132 KB

x11-base/xorg-server-1.0.1-r1: 384 files, 47 non-files, 109325.470 KB

The generated code seems to differ quite a bit:


Checking vendor_id string…AuthenticAMD 64
Disassembling /usr/bin/Xorg, please wait…
i486: 13 i586: 0 ppro: 0 mmx: 1835 3dnow: 0 ext3dnow: 0 sse: 1036 sse2: 3662 sse3: 0
/usr/bin/Xorg will run on AMD Athlon64 or higher processor.

Checking vendor_id string…AuthenticAMD 64
Disassembling /usr/bin/Xorg, please wait…
i486: 13 i586: 0 ppro: 0 mmx: 1939 3dnow: 0 ext3dnow: 0 sse: 1065 sse2: 3514 sse3: 0
/usr/bin/Xorg will run on AMD Athlon64 or higher processor.

The quantity of i486 instructions is always the same since monolithic, the number of mmx instructions increased, and that feels a bit strange as 4.0 was decreasing it; sse increased too, all in spite of sse2, that decreased and it’s now less than the one in the original monolithic version. I think that the average is an improvement, or at least I hope so.

But I said interesting, so here comes the funny part:


Checking vendor_id string…AuthenticAMD 64
Disassembling /usr/bin/konversation, please wait…
i486: 0 i586: 0 ppro: 0 mmx: 1548 3dnow: 0 ext3dnow: 0 sse: 0 sse2: 68 sse3: 0
/usr/bin/konversation will run on AMD Athlon64 or higher processor.

Konversation is using some sse2 instructions and quite a few mmx instructions… why that? I have nfc, but it is.. interesting, eh?