Re: BSD på desktoppen

From: Jesper Louis Andersen (none@jlouis--mongers.org.lh.bsd-dk.dk)
Date: Fri 19 Aug 2005 - 23:00:37 CEST


Date: Fri, 19 Aug 2005 23:00:37 +0200
From: Jesper Louis Andersen <none@jlouis--mongers.org.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Re: BSD på desktoppen

Mads Samsing wrote:

> OpenBSD var i mine tanker, pga. deres drivere til trådløse netkort. Så
> vidt jeg ved, er der understøttelse for PRISM USB trådløse kort!?

Check hardwaresiden der specifikt skriver om et givent kort er
understoettet. Check arkiverne.

> Jeg måler det udelukkende ud fra, hvordan X/Gnome kører. Og der virker
> det til, at Debian gør det bedre.
> Jeg har bygget skidtet med
> CPUTYPE=i586 (taget fra dmesg)
> CFLAGS= -O2 -pipe
> Jeg overvejer dog at ændre mine CFLAGS til noget lignende:
> CFLAGS= -O3 -pipe -fomit-frame-pointer -mmmx

Hvis du vil have mit raad, saa lader du vaere:

-O3 enabler -finline-functions og -frename-registers. -finline-functions
kan give en rimelig hastighedsforoegelse men en god branch-predictor
goer at det i virkeligheden ikke er saa meget igen. Specielt ikke i
typisk C-kode, der traditionelt har lange funktioner. Hvis inliningen er
alt for aggresiv kan det godt smadre din I-cache hvorfor at du faktisk
taber hastighed. -frename-registers tillader compileren at lave noget
register-renaming paa koden saa den undgaar falske afhaengigheder af
registrene. Det kan goere din instruction scheduler glad. Det betyder
dog ikke det store paa en x86, der kun har 8 registre til raadighed
(hvor mindst en gaar til stakkontrol). Dertil kommer at du ikke laengere
kan lave debugging fordi registre er blevet hevet rundt som bare pokker.

-pipe boer enables paa alt nyere hardware. Det har ingen effekt paa den
konstruerede kode, men speeder compilation op paa bekostning af hoejere
ram-forbrug (benytter pipes mellem trinene i compileren).

-fomit-frame-pointer smider frame-pointeren ud saa den faas et ekstra
register at lege med. Der ryger din debugging totalt, fordi
frame-pointeren som regel benyttes til dette. Det ekstra register er
rart paa en x86 (der er registerpresset hele tiden) -- men din kode skal
ogsaa vaere registertung for at det giver noget.

-mmmx forsoeger at benytte MMX-instruktionssaettet hvor det kan lade sig
goere.

Og hvorfor lade vaere? Fordi 99% af alle dine programmer vinder 1%
hastighed ved det. Det er ikke nok set i forhold til at enhver
optimering kan indeholde fejl. Det giver mening at vaere aggresiv paa
programmer saasom mplayer og dens libraries men resten vinder altsaa
naeppe nogen hastighed ved det.

Transmeta har nogle ret specielle chips. Hvordan de reagerer i forhold
til x86-kode er helt sikkert forskelligt fra hvordan en native x86
reagerer. Vaer konservativ og lav masser af maalinger hvis du vil lege
med optimeringer paa den.



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:51 CET