Strona 1 z 2

Kernel 2.6.28 w mini-code, 20% ułatwień dla programistów

: 31 grudnia 2008, 02:22
autor: LiTE
Z okazji nudów postanowiłem sprawdzić ile będzie zajmował kernel w wersji 2.6.28 po przekonwertowaniu go do mini-code.
Co rozumiem przez mini-code?

Przykład Hello World w C

Kod: Zaznacz cały

#include <stdio.h>
int main()
{
/* Proba komenta */
printf ("Hello World!\n"); // wyswietlanie hello
return 0;
}
Teraz ten sam Hello World w mini-code:

Kod: Zaznacz cały

#include <stdio.h>
int main() { printf ("Hello World!\n"); return 0; }
Czyli usuwamy wszystkie wcięcia, tabulacje, komentarze - zostaje nam sam kod do kompilowania. Ile można zaoszczędzić przestrzeni dyskowej po takiej operacji? Sprawdziłem to na jądrze Linuksa w wersji 2.6.28

Bez kompresji:
Przed: 343.8 MB | Po: 273.8 MB | Różnica: 70 MB (20,3%)

Kompresja bz2
Przed: 50.2 MB | Po 36.6 MB | Różnica: 13.6 MB (27%)

Czy warto? Sam nie wiem. Traktujcie to bardziej jako ciekawostkę :)

: 31 grudnia 2008, 02:31
autor: yantar
Jak ktos ma mala partycje /boot i teraz nie chce sie bawic w jej przesuwanie albo starego blaszaka z malym dyskiem to dla niego moze byc to calkiem przydatne :)

Re: Kernel 2.6.28 w mini-code, 20% ułatwień dla programistów

: 31 grudnia 2008, 16:34
autor: grzesiek
LiTE pisze: Czyli usuwamy wszystkie wcięcia, tabulacje, komentarze - zostaje nam sam kod do kompilowania. Ile można zaoszczędzić przestrzeni dyskowej po takiej operacji? Sprawdziłem to na jądrze Linuksa w wersji 2.6.28
Co :?:

Pierwszy raz coś takiego słyszę. To wbrew wszystkim książkom jakie przeczytałem o C/C++.
Na czy ty oszczędzasz na rozmiarze kodu źródłowego chyba nie na binarce. Chcesz powiedzieć, że jak pousuwam zbędne znaki to kompilator stworzy mniejszy plik wynikowy :->
Nie próbowałem ale i bez tego nie wieżę w to.

: 31 grudnia 2008, 16:40
autor: matiit

Kod: Zaznacz cały

strip -R .note -R .comment BINARKA
- Tym można zmniejszyć rozmiar binarki.
Sposób podany przez autora pozwala zaoszczędzić miejsce na źródłach...

: 31 grudnia 2008, 16:50
autor: sidjestgit
Grzesiek - a mi sie wydaje ze prawda jest to co napisal LiTe.
Nie jestem programista - tylko troche bawilem sie HTML.

Powiedzmy ze napisalismy strone - stronka zawiera tekst piosenki (np 3000 znakow/liter)
Nastepnie wezmy ta sama strone i "wzbogacmy" ja o opisy W tych opisach zamiescimy tekst Bibli.
Przegladarka wysietli nam jak poprzednio tylko tekst piosenki ale strona bedzie sie wczytywala kilka min.

Re: Kernel 2.6.28 w mini-code, 20% ułatwień dla programistów

: 31 grudnia 2008, 17:24
autor: LiTE
grzesiek pisze:Co :?:

Pierwszy raz coś takiego słyszę. To wbrew wszystkim książkom jakie przeczytałem o C/C++.
Na czy ty oszczędzasz na rozmiarze kodu źródłowego chyba nie na binarce. Chcesz powiedzieć, że jak pousuwam zbędne znaki to kompilator stworzy mniejszy plik wynikowy :->
Nie próbowałem ale i bez tego nie wieżę w to.
Przecież nigdzie nie napisałem, że zmniejszam wielkość pliku wynikowego. Chodzi mi o sam kod źródłowy - co słusznie zauważył @matiit. Celem tego było zobaczenie ile danych jest 'traconych' na komentarze oraz wcięcia w kodzie źródłowym. Wszystko co przeczytałeś w książkach jest nadal aktualne ;-)

: 31 grudnia 2008, 17:26
autor: grzesiek
@sidjestgit:Kolego, co ty porównujesz. To co piszesz to prawda w HTML to zmniejsza objętość kodu, może nawet ciupek przyspieszy interpretowanie strony ale to będą setne ;)
W językach kompilowanych takich jak C/C++ kompilator czyta kod, nie zwraca uwagi na znaki nie należące do języka, wcześniej jeszcze precompilator rozwija makra funkcje inline, podstawia wartości zmiennych które można obliczyć przed wykonaniem kodu itp. Potem kompilator tworzy kod wynikowy programu co jest mieszanką optymalizacji skoków itp oraz łączeniem z bibliotekami statycznymi a na końcu to mało ma wspólnego z tym co było napisane w C/C++ (kod jest przedstawiony w assemblerze a czy on jest obiektowy ;) - to abstrakcja).
Więc program (jego wielkość) nie zależy od objętości kodu źródłowego. Poza tym obecne kompilatory dodają tyle do kodu (np. tego co tu był przedstawiony), że on sam będzie po kompilacji to tylko 20% stanowił. Jeszcze ważne jest jaki kompilator i jakie opcje. Np. takie RTTI ile kodu dodaje.


@LiTe stąd to nieporozumienie bo nie napisałeś co właściwie zmniejszasz.

: 31 grudnia 2008, 17:32
autor: LiTE
To co napisałem LiTe jest dla mnie śmieszne chociaż by ze względu stylistyki kodu.
W sensie, że śmieszą Cie Twoje wypowiedzi? 8-)
Nie chodzi tutaj o czytanie tego kodu później czy też przyspieszanie kompilacji- skąd takie wnioski. Jak napisałem na końcu, traktować jako ciekawostka :> W liście mailingowej przeczytałem, że same komentarze w kodzie to około 3,5 miliona linii (~10% całości) więc pozostałe 10%, które wyszło w wyniku eksperymentu to wcięcia i znaki nowej linii :)

: 31 grudnia 2008, 17:37
autor: grzesiek
LiTE pisze: W liście mailingowej przeczytałem, że same komentarze w kodzie to około 3,5 miliona linii (~10% całości) więc pozostałe 10%, które wyszło w wyniku eksperymentu to wcięcia i znaki nowej linii :)
Było trzeba tak od razu ;-) a ja tu się zastanawiam... czy Ci chodziło również o objętość binarki hehehe

A co do tych komentarzy to dobrze świadczy o projekcje.

: 31 grudnia 2008, 17:41
autor: yantar
Buu myslalem ze to zmniejsza wynik koncowy ;]