Re: zmniejszenie WinSxS

Autor: Sempiterna <rzopa_at_amorki.pl>
Data: Thu 03 Sep 2009 - 12:10:30 MET DST
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=response
Message-ID: <4a9f9618$1@news.home.net.pl>

Użytkownik "Grzegorz Niemirowski" <gnthexfiles@poczta.onet.pl> napisał w
wiadomości news:h7o1tu$13ba$1@opal.icpnet.pl...
>> W sytuacji, gdy zdarza się, że każdy wolny bajt jest cenny? (mimo, że
>> już są terabajtowe dyski, gigabajtowe pamiątki, gigahercowe
>> procki...)
>
> W jakiej sytuacji każdy bajt jest cenny? Jak ma się dysk 20MB?

Jeśli np. tyle zostało wolnego, lub mniej... Właśnie ten temat
przerabiam.
Dobrze, że już powycinałem tu i ówdzie, ale miałem punkt, że porządki
zatrzymały by się, bo ie było czego i gdzie dać na bok.

>
>> Napisałeś "system nie każe kompilatorowi", czyli jak np. odpalam
>> kompilator, a moja Szklarenka ma nagle coś i mówi mu np. "kompiluj
>> pod AMD"... To chyba programista, czy deklaracje w kodzie, o tym
>> decyduj.ą, a nie system, na którym kompilator jest odpalany?
>
> No właśnie o tym piszę :)
>
>> To automatycznie, niepotrzebny zasób, powinien nie być dołączany do
>> wyniku, bo dołączony, staje sie śmieciem, który zajmuje pamięć,
>> niedostępną już dla innych, potrzebniejszych zasobów.
>
> Ale ile to zajmuje? Ile RAMu masz zajęte przez kod a ile przez inne
> dane? Kod zajmuje mało miejsca.

Odpaliłęm notepad, wpisałem tekst zajmujący 101 bajtów. Menedżer zadań -
program zajmuje 4472 kB. Plik programu, to 70 kB (uwa.żam, ze dużo, jak
na taki program, ale niech będzie, aż taki sknerus nie jestem). 4472-70,
to 4402 kB. powiedzmy, ze tekst zajmuje dalsze 2 kB (choć defakto
zajmuje 0.1 kB). Gdzie zatem podziało się 4400 kB?

>
>> Rozumiem. Nie mogę jednak oprzeć sie wrażeniu, że wspłczesny kod jest
>> tym, jak stary dowcip o malarstwie współczesnym, trochę niesmaczny:
>> "Nasrałbym na płótno, rozmazał, poczekał, aż zaschnie, i
>> zatytułowałbym go }}Orgazm niedźwiedzia{{". Już bardziej jestem w
>> stanie pojąć malarstwo Picassa...
>
> Z rozmiaru pliku wykonwalnego wnosisz, że zawiera on przypadkowe
> śmieci a kompilatory działąją losowo i chaotycznie?

Nie. Wnoszę, że kod staje się coraz bardziej rozbuchany, kompletnie bez
powodu. Już porównałem dwa kompilatory, które do identycznego kodu
źródłowego dają dwa całkiem różne rezultaty, jeśli chodzi o wielkość
kompilatu. Znaczy się, ze przynajmniej jeden z nich jest źle napisany.

>
>>> A writeln to co? Też sam napisałeś tę funkcję?
>> Program napisałem.
>
> Ale z użyciem biblioteki.

Jakiej? Zreszta nieważne, patrz uwaga akapit wyżej, na niej się skupmy.

>
>> Tekst zajmuje 63 bajty.
>
> Jakie znaczenie ma ile zajmuje tekst?

A takie choćby, że więcej tekstu, to zwykle więcej komend. No, chyba, że
różnice zapychamy pustym kodem, to rzeczywiście zmieniać się nie będzie,
dopóki starczy "zapchajdziury".

>
>> Czy makro jest rozpisane na kod maszynowy?
>
> A na co innego?

Jestem jak niewierny Tomasz...

> Ale AFAIK nie zawsze plik exe ląduje w całości w pamięci, system
> operacjny patrzy co należy wczytać. Jak masz samorozpakowujące się
> archiwum 1GB to OS nie załaduje całego exe do pamięci bo kodu to tam
> jest ileś kilobajtów.

Ale w tym jednogigowym pliku, gdzie przypuśćmy dekompresor, to 10 kB i
niech już będzie, ze jest optymalny i objętościowo i szybkościowo, nie
ma pustych miejsc. Taki plik rozumiem, że będzie duży. Zresztą o takim
czymś to już w 1991 czytałem, nawet bawiłem się programami, które
pokazują, ile jest wczytywane do pamięci, a ile jest towarzyszących
danych.

>> minimum. Pamięci nie są z gumy. Ich możliwości kiedyś się wreszcie
>> skończą, a wtedy ręka w nocniku...
>
> Wątpię aby to się szybko stało. Poza tym nie wiem czemu łączysz ze
> sobą wielkość pliku exe i wymagania sprzętowe.

Porównałbym wielkość kalkulatora z NT4 i z Visty/W7, a wymagania? To
czemu każdy kolejny system ma coraz większe, żeby w ogóle odpalić?
Już nawet w98 bez 16 MB nie odpalał, a w95 dał radę na 4 (choć
zainstalować się już nie wydolił).

>> mnie każdy klobajt jest cenny. Byłbym więc zobowiązany programistom,
>> aby kompilator NIE DOŁĄCZAŁ kodu, który nie jest potrzebny i nie
>> zostanie nigdy wykonany. Tak, on zapycha dysk.
>
> I zyskasz może parę MB. Jak się dysk kończy to zamiast męczyć się żeby

Tu parę MB, tam parę MB - i już się uzbiera.

> uzyskać jeden megabajt wolnego miejsca więcej kupuje się nowy.

Jak się ma na to pieniądze. Sponsoring w tym temacie chętnie przyjmę, za
7 paczek jest dwuterówka do nabycia nowa.

> trochę pomachać przełącznikami kompilatora i linkera. Narzut systemy
> wynikający z budowy pliku wykonywalnego nie jest duży. Narzut bierze
> się z dodatkowo wrzucanyc rzeczy. Przykładowo pod Windows taki
> program:
> #include <stdio.h>
> int main(void)
> {
> printf("hello, world\n");
> return 0;
> }
>
> tak naprawdę wygląda następująco:
>
> #include <stdio.h>
> int main(void)
> {
> printf("hello, world\n");
> return 0;
> }
> int mainCRTStartup()
> {
> int retval;
> init_heap();
> parse_command_line();
> init_global_vars();
> init_exception_handling();
> retval = main();
> ExitProcess(retval);
> }
>
> Więc tak naprawdę kod nie składa się z samego wywołania printf.
> Najpierw inicjalizowana jest sterta, następnie parsowane są opcje
> wiersza polecenia, potem zmienne globalne i wreszcie obsługa błędów.
> Dopiero w tym momecie

Hehm... zwykly tekst z przywitaniem...
To nalewając wachę do auta, przyjrzę się, czy przypadkiem nie ma
ukrytego mierzenia średnicy wlewu, sprawdzania zawiasu w pokrywce,
weryfikacji kluczyka, sprawdzania, czy radio nie gra, oraz pomiaru
współrzędnych chromatycznych koloru karty płatniczej, z jaką udam się do
kasy...

> wołany jest main. To wszystko dzieje się niejawnie. Pod Linuksem jest
> podobnie. Dlaczego? Bo programiści nie chcą tracić czasu na sterty,
> parsowanie opcji itp. Ale jak ktoś nie chce to nie musi z tego
> korzystać, może sobie pisać sam jak mu szkodza każdego bajtu. Tylko
> wtedy się namęczy a jego program będzie dużo, dużo droższy. Droższy
> niż ewentualny upgrade sprzętu.

Nie żartuj, doklepanie paru opcji w wywołaniu kompilacji tego
programiku, to zaraz ma go aż tak strasznie podrożyć? To czemu niekiedy
całkiem rozbudowane programy, są za darmo, a zajmują naście...dziesiąt
kilobajtów? I wcale źle nie działają? Pamiętam pierwszą Gnutellę,
programik poniżej 100 kB (i tak sporawo, ale powiedzmy, że ujdzie).
Mały, bardzo szybki, na stabilność nie narzekałem...

> Nie ma tu wię żadnego szklarniowego czy linuksianego narzutu, narzut
> wynika z wygody programisty i względów ekonomicznych.

Do mnie przemawia TYLKO pierwszy argument... Przy czym korzystanie z
wygody nie uważam za złe, dopóki nie jest to z lenistwa. Ja sobie dla
siebie mogę pisać programy byle jak, jeśli to kontroluję, ale jeśli
miałbym komuś udostępnić, to już raczej przyłożę się do jakości. Broń
Boże, nie zarzucam Tobie, że coś robisz źle. Po prostu, jak widzę, że
zakres działania danego programu nie zwiększa się, a w miarę kolejnych
wersji objętość rośnie gwałtownie, to ogarnia mnie zwątpienie. Mnie
wodotryski nie są potrzebne. Mocny komputer zestawiłem sobie głównie po
to, aby właśnie, nie wymieniać go za 3 lata (choć nie jest powiedziane,
ze tego nie zrobię), aby posłużył mi jak najdłużej. Duża jego wydajność
jest mi potrzebna przy obróbce dużych archiwów, których mam ponad 200
giga każdy megaherc, każdy zbędny bajt w kodzie, każdy zbędny
wodotrysk, to później skończona robota. A robię tego tyle, że z sekund
robią się minuty, godziny, nawet dni... Jak skończę - wtedy niech sobie
będzie nawet Vista 2020 - aby na dysk weszła, pamięci mogę dać do 8
giga, mogę poczekać pół godziny na odpalenie, po minucie na start
każdego programu. Na dziś, muszę bardzo szanować czas, on naprawdę jest
cenny.

-- 
"E, tam, oszukaństwo, oszukaństwo... Zwyczajna polityka!"
(C) Kazimierz Pawlak, do Kargula, o pomalowanej czarną pastą świni;
"Nie ma mocnych" - druga część tryptyku.
Received on Thu Sep 3 12:15:04 2009

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Thu 03 Sep 2009 - 12:42:01 MET DST