nenezrana mozilla

Lubos Lunak l.lunak na sh.cvut.cz
Čtvrtek Červen 7 21:19:44 CEST 2001


Lubos Lunak wrote:

> Stanislav Meduna wrote:
> 
>> ktunka schrieb in Nachricht ...
>> 
>>>Zajimalo by mne, zda s tim lze neco delat.
>> 
>> V poslednom case sa stalo zvykom pisat nenazrane programy.
>> Mozilla je zial klasickym prikladom a s 32 MB toho vela nespravite.
>> Dalsou radostou su graficke prostredia - skusil som nove KDE
>> a nech sa nikto nehneva, ale aby uz login trval pomaly tak dlho
>> ako bootnutie celeho stroja je IMHO hanba (a to mam vcelku
>> rychly stroj).
>> 
>> Osobne nechapem, preco tak programuju open source vyvojari,
>> ktori by nemali byt nuteni casovym tlakom nieco rychlo zbuchat,
>> pricom Microsoft co sa tyka browsera odvadza uz par rokov
>> daleko lepsiu pracu.
> 
>  To neni jen tim, ze 'tak programuju open source vyvojari'. Slusnou cast
> casu pri startu KDE zabira snaha linkeru provest vsechny potrebne
> relokace, protoze jednak je ten linker pomaly, jednak gcc pro C++ generuje
> kvanta symbolu, ktere tu relokaci potrebuji. Co se tyce pameti, tam taky
> gcc obcas nema nejlepsi vysledky a treba generuje kod v knihovnach jako
> nesdileny, i kdyz z principu to jsou konstatni data ( proto se treba
> preklada skoro cele KDE s -fno-exceptions ). A bylo by to u KDE jeste

 Jen tak pro ilustraci, podival jsem na to trochu podrobneji, a kazda KDE 
aplikace alokuje minimalne 100KB ( spis jeste vic ) nesdilene pameti kvuli 
kodu jako tohle :

const char* const texts[] = { "a", "b", "c" };

 Neboli konstatni ukazatele na konstantni textove retezce, naprosto nemenne 
veci, ktere by mely byt sdilene. Jenze vsechny ty 3 ukazatele se pri 
prekladu s -fPIC prelozi tak, ze se musi relokovat. Tudiz jdou do .data 
segmentu a tudiz kazdy proces pouzivajici knihovnu obsahujici tento kod tak 
obsahuje 3*sizeof(char*) nesdilene pameti.

 No, a v Qt a v kdelibs se nasbira hodne takovychhle pripadu, ktere 
potrebuji relokaci, tudiz zdrzuji pri startu a navic zabiraji pamet, 
protoze relokovane veci nejsou sdilene. Mozilla je jestli se nepletu taky v 
C++, takze taky cast jejiho "skveleho" vykonu jde na konto gcc.

> horsi, kdyby se tam nepouzival ten hack zvany kdeinit. Az bude volne
> dostupny prekladac z Kylixu, treba bude zajimave porovnat rozdily.
>  Ne ze by to i v KDE ( a jinde ) neslo udelat lepe, asi by se taky naslo
> dost mist na optimalizaci, ale holt kazda sranda neco stoji.
> 
>> 
>> Pokial nemienite pridavat pamat, ostava len optimalizovat
>> spotrebu pamati ostatnych aplikacii.

 Muzete zkusit hadat, co potrebuje optimalizaci daleko vice nez aplikace. 
Moje dva tipy jsou gcc a linker.

>> 
> 

 Lubos Lunak
--
 l.lunak na email.cz ; l.lunak na kde.org
 http://dforce.sh.cvut.cz/~seli



Další informace o konferenci Linux