-Os
Tomasz Pala
gotar w polanet.pl
Czw, 1 Maj 2003, 00:46:56 CEST
On Wed, Apr 30, 2003 at 23:51:34 +0200, Robert Kurtys wrote:
> > Gdzie mają być określone optymalizacje 'specjalnego' (optymalizowane
> > na 'coś innego')?
> specjalne to "jak narazie" glibc i kernel - czy tez jest jeszcze cos
> rownie wrazliwego
> (dla specjalnych opcje (o ile w ogole beda) musza trafic do speca
To oprócz 'specjalnych' stwórz kategorię 'inne'. Aha - jak w Twoim
modelu opcje mają trafić do speca, skoro tam nie przewidujesz miejsca na
jakiekolwiek opcje? Mnożysz byty.
> > Wszystko to będzie pięknie, dopóki nie okaże się, że na ia32 trzeba
> > optymalizować na rozmiar, a na sparcu na szybkość.
> ???
> czy ja jestem tak malo komunikatywny?
Albo jesteś niewyspany, albo ja tak mało komunikatywny.
> ustawiasz opcje per %arch - %__typ_pakietu czyli :na ia32 trzeba
> > optymalizować na rozmiar, a na sparcu na szybkość.
ia32 sparc
Mozilla rozmiar szybkość
OO rozmiar rozmiar
To, co na ia32 jest tą samą klasą 'kobyła', na sparcu stanowić może
różne klasy. Właśnie podwoiłeś liczbę swoich klas.
> > niewiele ryzykując koniecznością przebudowywania wszystkiego. Nie
> > podoba mi się nieprzyszłościowe podejście, wyżej już jest wątek o
> > db3, db*, gdbm etc.
> rzeklbym, ze jesli zapakujesz to wprost w spece to wlasnie to zajdzie, a
Optymalizacje są _dla konkretnego pakietu_, więc wystarczy chłopski
rozum żeby pojąć, że poza specem dla nich miejsca nie ma.
> w przypadku ustawienia dania w specu tylko %define __typ_pakietu dodasz
> w rpmie nowa arch (np C3) razy ilosc_typow_pakietow
Tak, dla różnej klasy-tej samej klasy. Przy okazji znów się namnożą
byty. Oprócz kobyła_all i kobyła_sparc_only będzie jeszcze
obliczeniowy_via_only i obliczeniowy_all. Wszystko razy
*_with_frame_pointer i *_c++_optimization.
> w innyp przypadku musisz "chodzic" po wszystkich specach.
Ba, musisz chodzić po wszystkich pakietach i je kompilować! Na tym
polega SOLIDNA optymalizacja, że się ją przeprowadza osobno dla każdego
krytycznego pakietu (jak krytycznych braknie to będzie można się zabrać
za niekrytyczne - w ich przypadku wystarczy wybrać tą, która daje
mniejszy rozmiar) i porównuje rezultaty.
> > - gdzie w powyższym jest rozróżnienie na obecność
> > -fomit-frame-pointer? Na kodzie c++ z -Os powoduje to _zwiększenie_
> > kodu wynikowego, zatem 'kobyły' będziesz musiał dalej dzielić.
> tak, zgadza sie dalej musze dzielic - masz racje!
> dla mnie ilosc typow pakietow < 10 jest nadal zupelnie sensowna, czy dla
Ja już się doliczyłem około 40 typów. Z KAŻDĄ niespodzianką w postaci
pakietu o odmiennym zachowaniu dojdzie kolejne 5.
Zresztą, będę się produkował. Zajrzyj do duke3d.spec - jego można ładnie
zwinąć do:
%define specflags '-DPLATFORM_UNIX=1 -funsigned-char'
i już zwiększa się czytelność
> durona stosujesz wiecejkombinacji optymalizacji dajacych stabilne
> pakiety i _zauwazalne_ roznice?
Dla durona:
-O2
-O2 -fomit-frame-pointer
-O2 -fno-exceptions -fno-rtti
-O2 -fomit-frame-pointer -fno-exceptions -fno-rtti
-Os
-Os -fomit-frame-pointer
-Os -fno-exceptions -fno-rtti
-Os -fomit-frame-pointer -fno-exceptions -fno-rtti
1. obliczeniowe, które nie chcą być 2 i 3.
2. obliczeniowe, które nie chcą być 3.
3. obliczeniowe, które nie chcą być 2.
4. obliczeniowe.
To samo dla -Os - to już 8 typów. Do tego typ 'specjalne' oraz 'inne' -
mamy już 10. Doliczamy inne optymalizacje, które w poszczególnych
przypadkach mogą się sprawdzić (-O3, -funroll-loops, -fforce-addr) - do
15 dobijamy lekko. Poza tym kobyła z ia32 może być mała dla Sparca,
czyli i tak muszą być osobne typy na każdy procesor: kobyła_4_all,
obliczeniowy_2_sparc etc - właśnie wygrałeś nagrodę, w ramach
minimalizacji liczby bytów stworzyłeś ich 60 w miejsce 5.
--
GoTaR <priv0.onet.pl->gotar> USA sux
http://mops.uci.agh.edu.pl/~gotar/
GEOS:. http://informatica.agh.edu.pl/ .:LF&A
Więcej informacji o liście dyskusyjnej pld-devel-pl