Kernel 2.6.28 w mini-code, 20% u

Ogólne pytania dotyczące systemu
LiTE
Beginner
Posty: 208
Rejestracja: 25 marca 2008, 13:22
Lokalizacja: Nowa Ruda

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

Post 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ę :)
yantar
Member
Posty: 1225
Rejestracja: 07 czerwca 2007, 21:15
Lokalizacja: Rzeszów

Post 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 :)
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

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

Post 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.
matiit
Beginner
Posty: 231
Rejestracja: 27 stycznia 2007, 09:45

Post 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...
sidjestgit
Beginner
Posty: 181
Rejestracja: 06 grudnia 2008, 17:55

Post 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.
LiTE
Beginner
Posty: 208
Rejestracja: 25 marca 2008, 13:22
Lokalizacja: Nowa Ruda

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

Post 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 ;-)
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post 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.
LiTE
Beginner
Posty: 208
Rejestracja: 25 marca 2008, 13:22
Lokalizacja: Nowa Ruda

Post 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 :)
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post 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.
yantar
Member
Posty: 1225
Rejestracja: 07 czerwca 2007, 21:15
Lokalizacja: Rzeszów

Post autor: yantar »

Buu myslalem ze to zmniejsza wynik koncowy ;]
ODPOWIEDZ