Thursday, August 30, 2007

Optimise.

Having used SLS (Soft Landing Systems an ancient now defunked distribution. IIRC SLS was the first 'packaged' distribution), Slackware then when moved to an x86_64 system, Slamd64 before finally settling on Bluewhite64. I currently have over 500 packages of my own creation. That is, I download the sources and configure, compile and install a lot of stuff myself, usually with a Bluewhite64 package of the result. It never ceases to amaze me how people claim optimisations over and above the stock -march=i486 -mcpu=i686, or in some cases -march=i386, Slackware uses or the stock i386 debian is built with, results in faster load and execution times.

Gentoo users are the biggest culprits for doing this. They claim, and worse some even think and believe, that because their systems are built from the ground up (this is no longer completely true as even stage1 comes with a pre-built base install last time I checked) with some semi insane GCC settings that their OS somehow, magically, is faster than all the other Linux distributions that come pre built via packages.

As an aside, the myth that says Gentoo gives you more knowledge than other distribution is just that. A myth. Portage does all work with the user giving some, often ignored, flags to it. Portage then goes and downloads the sources, builds then installs it. No black magic there at all.

Gentoo users through this mistaken belief can be seen on various mailing lists, web forums, blogs and Usenet arguing over little known, little useful, hidden GCC flags again in the mistaken belief that these flags offer them optimisations over and above what every other OS uses.

Gentoo users are not alone in this belief but their userbase is way over and above the most vocal about it. There are other distributions that make the same claims. Sourcemage, Rock Linux are two others that come immediately to mind at the time of writing.

I cannot find the link now but a while ago there was a binary speed comparison of Gentoo, Mandrake (now Mandriva) and Debian. Debian was compiled for i386, mandrake for i586 and Gentoo for i686. I don't recall what GCC flags where used but I do seem to recall that the flags used where pretty ordinary. It turned out that Debian's i386 compiled binaries were faster in every way. The report was vilified by Gentoo fanboys at the time but what the report did show was that setting insane GCC flags does not always mean one will get a faster system load time and execution time.

The truth is that most optimisations for GCC have nothing whatsoever to do with speed but do have something to do with the resultant binary size(s). This binary size can and does give the illusion that the binary can and does load and run faster.

No comments: