# Prędkość systemu...

## kolkowski_damian

Cześć,

Zaóważyłem, że jeśli:

- kompiluję cały system na CFLAGS i CXXFLAGS => "-march=athlon-xp -O2 -pipe", to większość aplikacji działa wolniej niżeli te skompilowane w Slackware, gdzie -mcpu=i686.

Mój procesor to właśnie Athlon XP (2200+) na jądrze thundebirda i chyba najlepiej jest dla niego zastosować optymalizację dla rodziny i686.

Co o tym sądzicie?

Pozdrawiam.

P.S. Zaraz odpalę w chrocie mielenie snapa do stage2 w slaku na 2.4.x z ~x86 i najlepiej czystymi USE; bo Gentoo nie lubi mieć 5 linijek USE podczas mielenia do stage2 ;-D (a tego nigdzie nie napisali, bądź nie wyczytałem).

Może tym razem Gentoo dorówna Slackware, no ale wątpię.

PP.S. A może by tak skompilować z ./bootstrap-2.6.sh (tyle, że to pewnie będzie w całości mało stabilne, ba pewnie się mozilla nie skompiluje z "Linux-2.6").

W ogle jakich nagłówków do jądra uzywacie przy kompilacji 2.6.x, no i nawet 2.4.x..?

Aaa.., no i jakie keywords? Ktoś jeszcze ~arch używa na "x86"?

----------

## krzysz

ja kompiluje z CFLAGS i CXXFLAGS="-march=pentium3 -mcpu=pentium3 -O2 -fomit-frame-pointer -s -pipe -funroll-all-loops -DNDEBUG -DG_DISABLE_ASSERT" i prawdę mówiąc nie zauważam jakiegoś znacznego przyrostu szybkości w porównaniu ze slakiem. (co potwierdza teze że slakcware jest jedną z najszybszych dystrybucji  :Smile: )

----------

## kolkowski_damian

 *krzysz wrote:*   

> ja kompiluje z CFLAGS i CXXFLAGS="-march=pentium3 -mcpu=pentium3 -O2 -fomit-frame-pointer -s -pipe -funroll-all-loops -DNDEBUG -DG_DISABLE_ASSERT" i prawdę mówiąc nie zauważam jakiegoś znacznego przyrostu szybkości w porównaniu ze slakiem. (co potwierdza teze że slakcware jest jedną z najszybszych dystrybucji )

 

No cześć slakowcu  :Smile: 

Korygując Twoje flagi to:

1. Wybierz pomiędzy optymalizacją dla rodziny bądź klasy procesorów, w tym wpadklu dla -mcpu bądź -march.

March jest dokładną optymalizacją dla ABI danego procesora, przez co nie pozwoli wykonać kodu na innym ABI nawet z tej samej rodziny ale stopień niżej, ponieważ tam niekture dyrektywy assemblera nie są zaimplementowane - przykład sse2 itp...

2. -fomit-frame-pointer, poważnie nie chcesz nic debugować? Bueeeee...

3. -s z tym lepiej glibc nie kompilować  :Smile: 

4. -pipe Dobra myśl, niech leci potokiem międdzy assemblerem

5. -funroll-all-loops, a tu zwalniamy działanie  :Smile: 

6. -DNDEBUG -DG_DISABLE_ASSERT- paranoja! Ja bym na tym do stage2 nie chciał dochodzić.

Wiesz, slak jest poprostu świetnie skompilowany/napisany/itp...  :Very Happy: 

Pozdrawiam.

P.S. Niech mnie ktoś poprawi jak się gdzies mylę

PP.S. Rozwijając -march i -mcpu dodam, że jeśli chcesz zejśc do obsługi i486 tak jak jest to w Sackware to dajesz -march=i486, no ale wtedy kd poza abi implikuje -mcpu również do i486, zatem dajesz -mcpu=pentium3 i masz przez to skompilowany system zgodny w stecz do i486 - chyba jasne ;-D

A co do tego -fomit-frame-pointer (zapominania wskaźników do ramek - bo tak to rozumię), to samo "-O" implikuje jego uzycie, przez co kod assemblera jest szybszy i mniejszy, a debugowanie wykluczone; z tym, że  to robi automatycznie gcc i niech tak robi, a Ty usilnie nie dodawaj tej flagi, bo debugowanie jest przydatne, a czasem potrzebne!

----------

## krzysz

Prawdę mówiąc to na flagach się raczej średnio znam, te co mam zaczerpnołem z usnetu i tego forum  :Smile: 

----------

## kolkowski_damian

 *krzysz wrote:*   

> Prawde mówiac to na flagach sie raczej srednio znam, te co mam zaczerpnol/em z usnetu i tego forum 

 

Aha, no ja tez.

To taka mal/a sugestia z mojej strony. Na przyszl/osc polecam uzycie Tobie takich flag:

`-march=pentium3 -O2 -pipe`

Taka optymalizacja jest moim zdaniem najpoprawniejsza dla Twojego sprzetu.

Aczkolwiek nie wykluczam wl/asnie uzycia -mcpu=i686 zamisat -march...

Pozdrawiam.

----------

## krzysz

Dzięki za rady, jutro powinienem już mieć nowy dysk, to spróbuje zbudować z podanymi przez Ciebie flagami.

----------

## C1REX

 *kolkowski_damian wrote:*   

> 
> 
> To taka mal/a sugestia z mojej strony. Na przyszl/osc polecam uzycie Tobie takich flag:
> 
> `-march=pentium3 -O2 -pipe`
> ...

 

Nie rozumiem tego tematu. Piszesz, że masz średnie pojęcie o flagach, że Twoje gentoo jest wolne, a mimo to pouczasz innych. 

Jeśli gentoo jest wolniejsze od slacka, to masz prawdopodobnie zła optymalizcję. Ja miałem przez pewien czas slacka i gentoo jednocześnie i Gentoo chodził wyraźnie lepiej.

 *Quote:*   

> 5. -funroll-all-loops, a tu zwalniamy działanie  

 

Ta flaga wciąż jest mocno kontrowersyjna. Wiele programów bardzo dobrze reaguje na tą flagę.

 *Quote:*   

> -DNDEBUG -DG_DISABLE_ASSERT- paranoja! Ja bym na tym do stage2 nie chciał dochodzić

 

Dlaczego? Pewnie połowa naszych rodaków ma skompilowany calutkie gentoo z tą flagą.

 *Quote:*   

> 2. -fomit-frame-pointer, poważnie nie chcesz nic debugować? Bueeeee... 

 

Poważnie nie chcesz większej wydajności? Bueeeee

Temat flag został już założony i przyzwoicie rozwiniety.

Pozdrawiam

----------

## OBenY

Danian: -O3 zdecydowanie najlepsze wyniki daje w polaczeniu z -fomit-frame-pointer toi juz w ogole odjazd - nie wiem, czemu sie pzed ta flaga wzbraniasz.

Swoja droga lepiej jedynie ustawiac -march, gdyz -mcpu oferuje mniejsze optymalizacje.

Tak pozatym, to -DG_DISABLE_ASSERT i -DNDEBUG u mnie w niczym nie przeszkadzaja a system buduje sie i chodzi wysmiecnicie.

Ja budowalem system z bootstrap-2.6.sh i zadnych problemow nie mam, chodzi bardzo stabilnie, wszystko sie kompiluje bez klopotow. Mozilla chodzi jak burza  :Smile: 

naglowki sys-kernel/linux-headers/linux-headers-2.6.3-r1. Wszystko budowane z ACCEPT_KEYWORDS="~x86"

Moj Gentoo goni Slackware az milo - bez szans:)

Watki na nptl, nowe gcc, prelinkowane binaria, ach rozkosz  :Smile: 

Krzysz: ja zalecam takie flagi:

```
-O3 -mcpu=pentium3 -march=pentium3 -mfpmath=sse -fomit-frame-pointer -ftracer -fforce-addr -funroll-loops -fprefetch-loop-arrays -ffast-math -pipe  -DNDEBUG -DG_DISABLE_ASSERT
```

 Rewelacja po prostu na procesory Intela - nowsze niz P2  :Smile: 

----------

## OBenY

Ech C1REX widze wyprzedziles mnie  :Smile: 

----------

## kolkowski_damian

 *C1REX wrote:*   

> Nie rozumiem tego tematu. Piszesz, że masz średnie pojęcie o flagach, że Twoje gentoo jest wolne, a mimo to pouczasz innych.

 

Własnie, nie rozumiesz...

 *C1REX wrote:*   

> Jeśli gentoo jest wolniejsze od slacka, to masz prawdopodobnie zła optymalizcję. Ja miałem przez pewien czas slacka i gentoo jednocześnie i Gentoo chodził wyraźnie lepiej.

 

Ja mam te 2 na raz i zaobserwowałem, teraz empirycznie że -mcpu w moim przypadku w większości kodu jest szybszy! (zwłaszcza C).

 *C1REX wrote:*   

> Dlaczego? Pewnie połowa naszych rodaków ma skompilowany calutkie gentoo z tą flagą.

 

Dlatego, że debugowanie programw jest przydatne - bynajmniej dla mnie!

 *C1REX wrote:*   

> Poważnie nie chcesz większej wydajności? Bueeeee

 

Patrz wyżej...

 *C1REX wrote:*   

> Temat flag został już założony i przyzwoicie rozwiniety.

 

Moim zdaniem się nie znacie, a w szczególności Ty. Popytam kumpli, zwłaszcza jednego co pisze kompilatory i utwierdzę się w przekonaniu że raczej mam rację i na moim sprzęcie tak jak napisałem większość programów (napisane w C) działa szybciej z -mcpu=i686 itd...

Precyzyjna, bardziej wzbogacona (użycie rejestrów zbędnych w aplikacjach które ich nie wykorzystują) kompilacja, w większości kodu napisanego w C jest poprostu zbędna.

P.S. Na razie takie mam zdanie. dzięki za wypowiedź innych.

----------

## kolkowski_damian

 *OBenY wrote:*   

> Danian: -O3 zdecydowanie najlepsze wyniki daje w polaczeniu z -fomit-frame-pointer toi juz w ogole odjazd - nie wiem, czemu sie pzed ta flaga wzbraniasz.

 

Ponieważ używam debugingu, a prędkość biblliotek tj. qt, czy innych napisanych w C++ wcale mnie nie jara, zważywszy że zajmują więcej miejsca na dysku i w pamięci operacyjnej a sam wzrost wydajności jest pewnie prawie rzaden.

 *OBenY wrote:*   

> Swoja droga lepiej jedynie ustawiac -march, gdyz -mcpu oferuje mniejsze optymalizacje.

 

Własnie, że nie - zależy co rozumiesz przez zoptymalizowanie kodu. I właśnie -march jest kwestią zawężoną - optymalizując binarkę tak że wykonuje się na mniejszej ilości architektur.

Pozatym, to co zaobserwowałem, to bezsens w używaniu -march w moim przypadku.

 *OBenY wrote:*   

> Tak pozatym, to -DG_DISABLE_ASSERT i -DNDEBUG u mnie w niczym nie przeszkadzaja a system buduje sie i chodzi wysmiecnicie.

 

Bootstrapa też na tym robiłeś - wątpię, że system będzie działał stabilnie - chyba kompilator sam te flagi wykluczy, albo ebuild do glibca będzie rozsądnie napisany i je wytnie.

 *OBenY wrote:*   

> Ja budowalem system z bootstrap-2.6.sh i zadnych problemow nie mam, chodzi bardzo stabilnie, wszystko sie kompiluje bez klopotow. Mozilla chodzi jak burza 
> 
> naglowki sys-kernel/linux-headers/linux-headers-2.6.3-r1. Wszystko budowane z ACCEPT_KEYWORDS="~x86"

 

Okej, a teraz ja:

- zbudowałem kiedyś na bootstrap-2.6.sh ale z nagłówkami 2.4.x (flagi -march=athlon-xp -O2 -pipe), mozilla się segvaulciła...

To był błąd, no ale nie używam już i tak nie będę przez długi czas jeszcze 2.6.x.

 *OBenY wrote:*   

> Moj Gentoo goni Slackware az milo - bez szans:)
> 
> Watki na nptl, nowe gcc, prelinkowane binaria, ach rozkosz 
> 
> Krzysz: ja zalecam takie flagi:
> ...

 

Jak Ty tego używasz od samego bootstrapa i wszystko kompiluje/działa szybko i wydajne, to gratuluję.

Ja nie wybarałbym tak agresywnej optymalizacji, dla swojego AMD, bo pewnie by się wysypało, a nie widzę sensu w poprawianiu kompilatora, który sam wybierze odpowiednie flagi.

Dlatego sądzę, że najlepiej zoptymalizować nie za bardzo, a resztą niech się zajmie kompilator.

P.S. W ogóle debilizmem jest kompilować system po kilka razy żeby sprawdzić, czy przypadkiem -ftracer w połączeniu z -O3 dla tej aplikacji będzie szybsze od czegoś innego - to robi kompilator.

Ja wolę kupić więcej RAM, przynajmniej zaóważę różnice ;-P

----------

## C1REX

Co Ty taki nerwowy? 

Argument, że się nie znam? Tak, jest prawdziwy. Komputer mam 2 lata, gdzie 1,5 roku służył mi wyłącznie do grania. Mimo, że nie znam się na Linuksie, programowaniu i kompilacji, to tematem się interesuję i wiem co widzę. Po przeglądnieciu ogromnych ilości tekstu i wyników testów, oraz rozmowach z obeznanymi w temacie ludźmi mogłem dojść do flag, na których Gentoo jest wyraźnie szybsze od Slacka i tak samo stabilne.

Mało mnie interesuje co dana flaga robi, tylko jaki ma ona wpływ na wydajność i stabilność. Opisy w manualu, czy opinie ludzi nie przemawiają do mnie tak, jak liczby w tabelach. 

Ja jestem ze swego Gentoo bardzo zadowolony. Szybkość działania jest rewelacyjna, a jego łatwość obsługi pozwala cieszyć sie z systemu takiemu newbie jak ja. 

Flagi ObenY'ego są świetne i na bardzo podobnych (ja mam jeszcze bardziej agresywne) mój gentoo na Duronie800 chodzi bardzo szybko i stabilnie. (mi też możesz pogratulować). 

Te flagi nie są z kosmosu, tylko są wynikiem dyskusji i rozważań mądrych ludzi na innych forach lub grupach dyskusyjnych. 

Po co założyłeś temat, gdzie sam sobie odpowiadasz i prowokujesz ludzi do kłutni? Hmmm.... Wygląda, jak byś się wymądrzał.

Może nie jestem taki mądry jak Ty, ale nie wmówisz mi, że mój Gentoo jest wolny i/lub mało stabilny.

Pozdrawiam

----------

## kolkowski_damian

 *C1REX wrote:*   

> Co Ty taki nerwowy?

 

Sorki, noc była a wtedy wychodzi ze mnie cały ja ;-DDD

 *C1REX wrote:*   

> Argument, że się nie znam? Tak, jest prawdziwy. Komputer mam 2 lata, gdzie 1,5 roku służył mi wyłącznie do grania. Mimo, że nie znam się na Linuksie, programowaniu i kompilacji, to tematem się interesuję i wiem co widzę. Po przeglądnieciu ogromnych ilości tekstu i wyników testów, oraz rozmowach z obeznanymi w temacie ludźmi mogłem dojść do flag, na których Gentoo jest wyraźnie szybsze od Slacka i tak samo stabilne.

 

Moż to dziwnie zabrzmi, ale to pół roku mnie kusi - kompilowałes kiedyś jądro na Slackware?

W ogóle z jaką wersja Slackware porównujesz najnowszego portage (~x86) i z jakim jądrem i jak skompilowanym - wiesz to ma znaczenie!

 *C1REX wrote:*   

> Mało mnie interesuje co dana flaga robi, tylko jaki ma ona wpływ na wydajność i stabilność. Opisy w manualu, czy opinie ludzi nie przemawiają do mnie tak, jak liczby w tabelach.

 

Heh - ja sobie czytam i wybieram odpowiedni - w końcu manual pisali twórcy GCC, a jakieś tabelki w Gentoo - "gentowe ludki".

 *C1REX wrote:*   

> Ja jestem ze swego Gentoo bardzo zadowolony. Szybkość działania jest rewelacyjna, a jego łatwość obsługi pozwala cieszyć sie z systemu takiemu newbie jak ja.

 

No właśnie mnie Gentoo razi automatyzacją, ale chciałem skombinować coś szybszego od mojego Slackware-current, ale się nie dało  :Sad: 

 *C1REX wrote:*   

> Flagi ObenY'ego są świetne i na bardzo podobnych (ja mam jeszcze bardziej agresywne) mój gentoo na Duronie800 chodzi bardzo szybko i stabilnie. (mi też możesz pogratulować).

 

Gratuluję  :Very Happy:  Jednak ta Twoja szybkość jest względna i mało określalna, ponieważ niewiadomo jakiego miałeś slaka i jak pokompilowanego.

 *C1REX wrote:*   

> Te flagi nie są z kosmosu, tylko są wynikiem dyskusji i rozważań mądrych ludzi na innych forach lub grupach dyskusyjnych.
> 
> Po co założyłeś temat, gdzie sam sobie odpowiadasz i prowokujesz ludzi do kłutni? Hmmm.... Wygląda, jak byś się wymądrzał.

 

Nie, no co Ty nie wymądrzam się!

Zaobserwowałem, że nie ma sensu ustawiać tylu flag na siłe wszędzie, bo wcale nie nie sie to ze sobą wydajności.

Przykładowo MC, fakt że w Gentoo mam go z dziwnymi łatami + samba, a w slaku bez, no ale z {-march=athlon-xp|-mcpu=i686} -O2 -pipe włącza się dłużej niżeli w Slackware-current.

Z kolei KDE jest o odrobinkę szybsze w Gentoo.

Ale są to takie różnice, których prawie nie widać (jedynie `time` je zaóważa).

Najbardziej dziwaczne jest OO-1.1.0 na Gentoo działa wolniej niżeli binarka z OO.org ;-D

Może 1.1.1, które może jest już w portage będzie szybsze, ale wątpię. Ludzie z OO tak kompilują OO, że ich binarka zawsze wychodzi szybsza niż kompilowana osobiście.

 *C1REX wrote:*   

> Może nie jestem taki mądry jak Ty, ale nie wmówisz mi, że mój Gentoo jest wolny i/lub mało stabilny.

 

Ehhh.., to nie żadna mądrość.

Ja slaka używam od 3.9 i żadne gentoo tego nie zmieni no ale skoro jest możliwość przemielenia całego systemu w kilkanaście godzin to sobie testuje gentoo, ale nie widzę korzyści płynących z użycia w/w flag - slak w większości aplikacji jest szybsz.

Pozdrawiam również i dzięki za rozmowe. Coprawda wyszło troche głupio i się rozlazła gadka...

----------

## C1REX

Fajnie, że nie doszło do walki.

 *kolkowski_damian wrote:*   

> 
> 
> Może to dziwnie zabrzmi, ale to pół roku mnie kusi - kompilowałes kiedyś jądro na Slackware?
> 
> W ogóle z jaką wersja Slackware porównujesz najnowszego portage (~x86) i z jakim jądrem i jak skompilowanym - wiesz to ma znaczenie!

 

Tak, kompilowałem jajko na Slackware. Odpalałem oba systemy na tym samym jajku i Gentoo wydawał się sporo szybszy. Sporo - rzecz względna. Załóżmy, ze różnica była odczuwalna.

 *Quote:*   

> Heh - ja sobie czytam i wybieram odpowiedni - w końcu manual pisali twórcy GCC, a jakieś tabelki w Gentoo - "gentowe ludki".

 

Ja tych tabelek się naczytałem i musze stwierdzić, że mało tych testów było przeprowadzanych na Gentoo. Sporo było na Slacku, LFS, a nawet PLD-cvs. Manual daje zbyt ostrożne opinie. Przykładem jest opis świetnego funroll-loops. Wyniki testów nastrajają większym optymizmem.

 *Quote:*   

> No właśnie mnie Gentoo razi automatyzacją, ale chciałem skombinować coś szybszego od mojego Slackware-current, ale się nie dało :-( 

 

Powinieneś się cieszyć, że od  tak długiego czasu korzystasz z tak dobrego systemu :)

 *Quote:*   

> 
> 
> Gratuluję :-D Jednak ta Twoja szybkość jest względna i mało określalna, ponieważ niewiadomo jakiego miałeś slaka i jak pokompilowanego.

 

Ja porównuję do binarkowego slaka. Oczywiście okrojonego, skonfigurowanego i ze zmienionym jajkiem. Z drugiej strony Oba systemy różniły się softem i ich wersją.

 *Quote:*   

> Najbardziej dziwaczne jest OO-1.1.0 na Gentoo działa wolniej niżeli binarka z OO.org ;-D
> 
> Może 1.1.1, które może jest już w portage będzie szybsze, ale wątpię. Ludzie z OO tak kompilują OO, że ich binarka zawsze wychodzi szybsza niż kompilowana osobiście.
> 
> 

 

To nie jest dziwaczne. Ilu ludzi ma wiedzę większą, niż spece z OO i potrafią skompilować soft lepiej, niż wybitni informatycy? BTW: Dla OO _bardzo_ dużo daje -ffast-math. Tak przynajmniej w testach wychodziło.

Nie wiem, czy ma sens takie psioczenie na inne systemy. Każdy z nas używa to, co uważa za lepsze. Nikt nikogo nie zmusza do niczego. Sam się przymierzam do kompilacji LFS, ale to nie sprowokuje mnie do wyzywania Mandrake. To są zupełnie inne produkty przeznaczone do trochę innych celów i dla zupełnie innych ludzi. 

Dla mnie Linux, to rozrywka i hobby samo w sobie. Nie chiałbym z nikim się kłucić, tylko cieszyć się z użytkowania systemu. 

"Linux user" to brzmi dumnie.  Powinniśmy opanować swoje emocje i zachowywać się na poziomie....

Pozdrawiam

Krzysiek.

----------

## kolkowski_damian

 *C1REX wrote:*   

> To nie jest dziwaczne. Ilu ludzi ma wiedzę większą, niż spece z OO i potrafią skompilować soft lepiej, niż wybitni informatycy? BTW: Dla OO _bardzo_ dużo daje -ffast-math. Tak przynajmniej w testach wychodziło.

 

Ale Ty się tych testów naczytałeś  :Very Happy: 

 *C1REX wrote:*   

> Nie wiem, czy ma sens takie psioczenie na inne systemy. Każdy z nas używa to, co uważa za lepsze. Nikt nikogo nie zmusza do niczego. Sam się przymierzam do kompilacji LFS, ale to nie sprowokuje mnie do wyzywania Mandrake. To są zupełnie inne produkty przeznaczone do trochę innych celów i dla zupełnie innych ludzi. 
> 
> Dla mnie Linux, to rozrywka i hobby samo w sobie. Nie chiałbym z nikim się kłucić, tylko cieszyć się z użytkowania systemu.

 

Zgadzam się z Tobą.

 *C1REX wrote:*   

> "Linux user" to brzmi dumnie.  Powinniśmy opanować swoje emocje i zachowywać się na poziomie....

 

Dumnie - heh, no co Ty. Dumnie by brzmiało ten co poderwał tą laskę z (mogę przekłamać) "nescaffe classic" (kwadratowe!), no bynajmniej dla mnie ;-DDDD

 *C1REX wrote:*   

> Pozdrawiam 
> 
> Krzysiek.

 

No ja też.

A tak przy okazji, to za chwilę odpalę bootstrapa z tymi Waszymi wyjechanymi flagami  :Smile: 

Heh, w /etc/profile miałem kiedyś formita ;-D

.~. $ cat /etc/profile | grep CFLAGS

#export CFLAGS="-O2 -Wall -march=athlon-xp -mfpmath=sse -msse -mmmx -m3dnow -pipe"

#export CXXFLAGS="$CFLAGS"

#export CFLAGS="-march=athlon-xp -Os -fomit-frame-pointer -s -pipe -DNDEBUG -DG_DISABLE_ASSERT"

export CFLAGS="-march=athlon-xp -O2 -pipe"

export CXXFLAGS="$CFLAGS"

.~. $ 

P.S. Ktoś po za mną korzysta z grupy mailingowej "gentoo-users-pl" ???

----------

## kolkowski_damian

 *kolkowski_damian wrote:*   

> A tak przy okazji, to za chwilę odpalę bootstrapa z tymi Waszymi wyjechanymi flagami 

 

Wiesz co kolego użyłem Twoich flag z forum i jednego takiego... Co nastąpiło:

a.) Na Twoich posypało się już przy gettexcie, nie chcąc zrobić binarki.

b.) Na jego doszło do m4 i dupa - później już przez bootstrapa przelatywało, że niby skończył po 10 min ;-D

Flagi:

a.) CFLAGS="-O3 -march=athlon-xp -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer -f

force-addr -fmove-all-movables -ffast-math -s -mmmx -m3dnow -fstrength-reduce -fno-rerun-loop-opt -DNDEBUG -DG_DISABLE_ASSERT"

b.) CFLAGS="-march=athlon-xp -Os -s -pipe -fomit-frame-pointer -mfpmath=sse -msse -mmmx -m3dnow"

CXXFLAGS="-march=athlon-xp -Os -s -pipe -fomit-frame-pointer -fno-rtti -fno-exceptions -fno-common -mfpmath=sse -msse -mmmx -m

3dnow"

Dodatkowo wszędzie:

USE="samba tetex cdr acpi scanner sdl mbox oss oggvorbis qt kde mmx 3dnow sse -gnome -gtk -java -cups -apm -alsa -maildir"

MAKEOPTS="-j2"

ACCEPT_KEYWORDS="~x86"

Także badziew na całego. Chyba najbezpiecczniej bootstrapa mielić na tym co miałem na początku, no i najlepiej bez ~x86 z czystym USE - bueeeee...

P.S. USE i tak są małe!

----------

## C1REX

 *kolkowski_damian wrote:*   

> 
> 
> Wiesz co kolego użyłem Twoich flag z forum i jednego takiego... Co nastąpiło:
> 
> a.) Na Twoich posypało się już przy gettexcie, nie chcąc zrobić binarki.
> ...

 

Prawdę mówiąc, to nie wiem dlaczego u Ciebie tak się dzieje. Ja mam od samego bootstrapa  te flagi. 

Wygląda na to, że ebuldy nie filtrują brzydkich flag. Prawdę mówiąc, to trzeba się postarać, aby założyć blokujące kompilację flagi. 

Może niech ktoś bardziej obeznany tutaj się wypowie.

----------

## kolkowski_damian

 *C1REX wrote:*   

> Prawdę mówiąc, to nie wiem dlaczego u Ciebie tak się dzieje. Ja mam od samego bootstrapa  te flagi.

 

Kłamiesz, albo Twój procesor reaguje na nie inaczej.

 *C1REX wrote:*   

> Wygląda na to, że ebuldy nie filtrują brzydkich flag. Prawdę mówiąc, to trzeba się postarać, aby założyć blokujące kompilację flagi.

 

Heh - brzydkich ;-D Delikatnie powiedziane.

 *C1REX wrote:*   

> Może niech ktoś bardziej obeznany tutaj się wypowie.

 

A co ma się wypowiadać - nie ma co sprawdzać - nie nadają się i tyle.

Na innych flagach się kompiluje, a na w/w nie.

----------

## krzysz

 *OBenY wrote:*   

> 
> 
> Krzysz: ja zalecam takie flagi:
> 
> ```
> ...

 

Dla CFLAGS i CXXFLAGS ? Prawdę mówiąc mam złe wspomnienia z -fomit-frame-pointer i prgramami w c++ pisanymi (nie ze wszystkimi).

----------

## no4b

Ja mam cale gentoo skompilowane z:

```
CFLAGS="-Os -march=athlon-tbird -mcpu=athlon-tbird -pipe -fomit-frame-pointer -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"
```

```
CXXFLAGS="-Os -march=athlon-tbird -mcpu=athlon-tbird -pipe -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"
```

```
ACCEPT_KEYWORDS="~x86"
```

Dziala swietnie na moim duronie 800 mhz.

----------

## kolkowski_damian

Kolejne flagi do niczego...

Patrzcie:

: undefined reference to `symtab'

../lib/libm4.a(regex.o)(.text+0xb): In function `init_syntax_once':

: undefined reference to `re_syntax_table'

../lib/libm4.a(regex.o)(.text+0x1e): In function `init_syntax_once':

: undefined reference to `re_syntax_table'

../lib/libm4.a(regex.o)(.text+0x30): In function `init_syntax_once':

: undefined reference to `re_syntax_table'

../lib/libm4.a(regex.o)(.text+0x42): In function `init_syntax_once':

: undefined reference to `re_syntax_table'

../lib/libm4.a(regex.o)(.text+0x4f): In function `init_syntax_once':

: undefined reference to `re_syntax_table'

../lib/libm4.a(regex.o)(.text+0x2f2a): more undefined references to `re_syntax_table' follow

../lib/libm4.a(error.o)(.text+0x7d): In function `error':

: undefined reference to `program_name'

collect2: ld returned 1 exit status

make[1]: *** [m4] Error 1

make[1]: Leaving directory `/var/tmp/portage/m4-1.4-r1/work/m4-1.4/src'

make: *** [all] Error 1

!!! ERROR: sys-devel/m4-1.4-r1 failed.

!!! Function src_compile, Line 46, Exitcode 2

!!! (no error message)

uran scripts #

Wieczorem skompiluje na moich starych, zeby wykluczyc bl/edy w portage.

----------

## C1REX

 *kolkowski_damian wrote:*   

>  *C1REX wrote:*   Prawdę mówiąc, to nie wiem dlaczego u Ciebie tak się dzieje. Ja mam od samego bootstrapa  te flagi. 
> 
> Kłamiesz, albo Twój procesor reaguje na nie inaczej.
> 
> 

 

Po co miałbym kłamać? Sporo osób ma bardzo podobne flagi do moich, a flagi no4b i OBenY'ego to niemal standard. 

Powinieneś zainteresować się, z jakimi flagami ludzie potrafią skompilować system... i to bez zabezpieczeń w ebuildach.

----------

## fallow

hello  :Smile:  szkoda,ale sie watek "ladnie" rozwija , wlasnie mam znowu net , po kilku dniach "przerwy w dostawie" hehe, ja tez mam podobne flagi

```

-O3 -march=athlon-tbird  -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer  -fforce-addr  -fmove-all-movables  -ffast-math -s -mmmx -m3dnow "

```

chialbym powiedziec na poczatek tyle :  :Smile: 

od kiedy kompilator wybiera sam flagi ? , owszem optymalizacja odbywa sie na poziomie grafow , drzewek wszystko jest ladne leksykalnie rozpisywane , sa obliczane przebiegi przyplywu danych , potem zbijane do kupy , ale flag to on sam nie wybiera , mozna sie spierac czy jest w ogole sens optymalizacji kodu np. w czystym nieobiektowym C , ktore przeciez wyciaga prawie 90% assemblera , przy "dobrze" napisanym kodzie , i zdanie beda podzielone jak i zawsze byly . dla mnie sens jest , tak samo jak i mozna sie spierac czy rozwijac petle , ktos (nie wiem juz kto , bo strasznie dlugi ten watek) napisal ze nie ma sensu rozwiaja petli , bo po cos one sa , no ale rozwijanie petli tez po cos jest , ja z doswiadczenia wiem ze rozwiajanie petel daje duzo , of course , nie ma sensu rozwijac np. kopiowania tablicy bo to by bylo chore , lepiej po prostu uzyc np. rep movs(x) ,ale np. duzy sens ma rozwijania nie za bardzo skomplikowanych petli przy mnozeniu macierzy , tylko chore znowu jest to ,czytac kod napisany przez kogos innego i myslec czy jest sens roziwajac u niego petle czy tez nie , albo moze rozwinac ta i ta, a tamtej nie , w koncu mozna debbugowac kazdy program i poprawiac czysty asm wygenerowany przez kompilator ale to juz by bylo sadomasochizm hehe, btw. march to przeciez tylko wybor odpowiedniego zestawu instrukcji a nie optymalizacja , choc mozna sie klucic ze wybor odpowiedniego zestawu instrukcji tez jest w pewnym sensie opytmalizacja 

wszystko przy optymalizacji zalezy od danego kodu , techniki osoby ktora go napisala , ale wszystko mozna uogolnic i po czesci przewidziec ,ograniczenia w ebuildach tez przeciez po cos sa ,

wiem jedno  :Smile:  , trzeba troche wyluzowac PANOWIE  :Wink: 

nie wiem czemu , ale w tym kraju wiele osob ma " z mety " bojowe nastawienie , czego dobrym przykladem jest sejm  :Smile: 

Panie Damianie , nie robmy sejmu z forum  :Smile: 

----------

## kolkowski_damian

 *fallow wrote:*   

> (...)Panie Damianie , nie robmy sejmu z forum 

 

Jasne  :Very Happy: 

Właśnie mi się bootstrap skompilował na tych flagach:

```

CXXFLAGS="-Os -march=athlon-xp -mcpu=athlon-xp -pipe -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"

CFLAGS="-Os -march=athlon-xp -mcpu=athlon-xp -pipe -fomit-frame-pointer -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"

```

Ufffff.., w końcu znalazłem przyczynę problemu. Wina leżała po stronie stage1-x86 z experimental.

Niepotrzebnie go użyłem, na tym z 2004.0 też x86 stage1 - skompilowało się bez zacieńć.

Może tym razem gentoo bedzie szybsze od slaka  :Smile: 

----------

## C1REX

Jeśli dać wiarę testom, to na flagach fallow-a lub OBenY'ego uzyskałbyś lepsze wyniki - zwłaszcza na nowym gcc. 

Flagi OBenY'ego to sama czołówka. Prawie każda z tych flag jest brana pod uwage w testach. fallow optymalizuje nieco agresywniej, ale system gładko daje się na nich skompilować. 

Flagi no4b nie są jednak gorsze. Wiele osób twierdzi, że to właśnie na takim zestawie system chodzi najlepiej. Dodatkową zaletą jest spora oszczędność miejsca.  _Bardzo_ popularny zestaw.

Ja tu się wymądrzam, a pozostałym uczestnikom dyskusji do pięt nie dorastam. Już kończę.

Pozdrawiam wszystkich.

----------

## no4b

Co do moich flag, to nie czytalem testow, po prostu nie chce mi sie. Samo tak sie wyklarowalo podczas uzywania FreeBSD i na poczatku uzyania Gentoo.

Dodac mozna jeszcze -mfpmath=sse, ale moj procesor nie obsluguje...

----------

## OBenY

C1REX Mozesz wkleic swoje aktualne flagi ?

Teraz male OT:

Moze mi ktos powiedziec, czy oplaca sie dawac do flag -fno-rerun-loop-opt i co ta flaga robi ?

----------

## C1REX

 *OBenY wrote:*   

> C1REX Mozesz wkleic swoje aktualne flagi ?
> 
> 

 

 *kolkowski_damian gdzieś na grupach dyskusyjnych wrote:*   

> Polecane przez jednego dziwaka, no ale on na tym bootstrapa na 99,9 nie
> 
> mielił!

 

Masz najwyżej 0.01% szansy, że się uda aż cały system z KDE na tym postawić ;)

```
CFLAGS="-O4 -march=athlon-tbird -mcpu=athlon-tbird -pipe -fomit-frame-pointer -funroll-loops -fprefetch-loop-arrays -fno-rerun-loop-opt -ftracer -fforce-addr -fmove-all-movables -ffast-math -s -mmmx -m3dnow -fstrength-reduce -DNDEBUG -DG_DISABLE_ASSERT

USE="mmx 3dnow kde qt -gnome -gtk -java -cups -docs"

```

Ryzykowną (teoretycznie), ale b. dużo dającą w wielu przypadkach flagą jest -ffast-math.

O4 mam, bo nadal nie wiem czy to fakt, czy mit. Sporo testów uwzględnia ten stopień optymalizacji, a i ebuild do mplayera ustawia domyślnie O4. Tak, czy inaczej, to nic nie tracę - najwyżej zredukuje mi do O3.

--------------------------

 *OBenY wrote:*   

> 
> 
> Teraz male OT:
> 
> Moze mi ktos powiedziec, czy oplaca sie dawac do flag -fno-rerun-loop-opt i co ta flaga robi ?

 

Teraz udało mi się jedynie tyle wykopać. Więcej dowiesz się pewnie od fallow-a.

-fno-rerun-loop-opt - 

1.  *Quote:*   

> *Optimization Options*
> 
>      *Note Options that Control Optimization: Optimize Options.
> 
>           -ffloat-store  -fforce-mem  -fforce-addr  -fno-inline
> ...

 

2. http://www-f1.ijs.si/~krivec/bench/bench_bm_mm_all.txt

3.  *Quote:*   

> -fno-rerun-loop-opt 
> 
> In general, the optimizations enabled with these options will lead to faster code being generated by GNU Fortran; hence they are enabled by default when issuing the g77 command. 

 

4. http://www.math.utah.edu/pub/benchmarks/local/zhu/SUMMARY.2.html

--------------------------

----------

## C1REX

Acha... dla poparcia tezy, że nie istnieją flagi idealne. Podaje ten link.

http://night.pl/~viper/gentoo/

 *kolkowski_damian do autora wrote:*   

> Znalazłem tam Twoje dziwne flagi, powiedz ale bez kłamst czy Ci się na nich
> 
> bootstrap kompiluje w czymś po wydaniu 2004.0..?

 

----------

## fallow

hello  :Smile:  ja dodam tylko tyle , ze standardowo optymizacja petli przy 0>=2 jest przeprowadzana dwukrotnie. a fno-rerun-loop-opt wylacza drugi przebieg , pozostawiajac pierwszy . w sumie logiczne jest optymizowac wiecej niz jeden raz  , ale z wielu testow wynikia   , ze przy srednio zlozonych petlach nie oplaca sie ich powtornie optymiazowac bo daje to gorsze wyniki , 

np :

```

mnozenie macierzy

------------------------------------------------------------------------------- 

Program  f77 options                                               CPU time 

------------------------------------------------------------------------------- 

                                                                       97 

         -O3                                                            47 

         -O3 -funroll-loops                                        47 

         -O3 -funroll-all-loops                                       47 

         -O3                -fstrength-reduce                             47 

         -O3 -funroll-loops -fstrength-reduce                         47 

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt   29 

    -O3 -funroll-loops                   -fno-rerun-loop-opt          29 

    -O3 -funroll-all-loops               -fno-rerun-loop-opt          29 

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fexpensive-optimizations                             29 

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fforce-mem                                                29 

    -O3 -funroll-loops -fstrength-reduce -fno-rerun-loop-opt 

         -fforce-addr                                                 29 

    -O3 -funroll-loops                   -fno-rerun-loop-opt 

         -fforce-mem -fforce-addr                                     29

```

btw.nie sadze aby C1Rex klamal  :Smile: 

greetzz

----------

## kolkowski_damian

 *kolkowski_damian wrote:*   

> Właśnie mi się bootstrap skompilował na tych flagach:
> 
> ```
> 
> CXXFLAGS="-Os -march=athlon-xp -mcpu=athlon-xp -pipe -ffast-math -mmmx -m3dnow -s -DNDEBUG -DG_DISABLE_ASSERT"
> ...

 

No i stało się większośc programów (według mojego odczucia) działa o jakieś 5% szybciej - tak na oko ;-D

Wracając do flag których użyłem do kompilacji całego systemu od bootstrapa, tylko w 2 miejscach zawiodły, mianowicie:

- libwww

- mozilla-1.{6|7b}

Także wtedy je zmieniłoem i się skompilowało.

Ogólnie polecam Gentoo - fajna rzecz.

----------

