Jądro Linux i Windows [zamknięte]

9

Pracuję w systemie Linux, a znajomy w systemie Windows 7.

Byłem zdumiony szybkością, jaką NetBeans, Eclipse, pgAdmin i inne programy otwierają dużo, naprawdę, DUŻO szybciej w Linuksie niż w Windowsie.

Jaka jest główna różnica między Linuksem a jądrem systemu Windows, która powoduje różnicę obciążenia czasem?

Oba komputery mają dokładnie taką samą konfigurację sprzętową.

Gerep
źródło
1
Zabawne, moje doświadczenie jest dokładnie odwrotne - na wszystkich moich komputerach programy w systemie Windows ładują się znacznie szybciej niż w systemie Linux (szczególnie w systemie Windows 7, który zgaduje, które programy otworzysz na podstawie wcześniejszego użycia, i wstępnie ładuje je do pamięci ) . Być może jego maszyna z systemem Windows jest pełna wzdęć? Czy firma jest antywirusowa tylko dla systemu Windows? Czy próbowałeś uruchomić Linuksa na tym samym komputerze (awarie dysków twardych drastycznie wpływają na czas ładowania) .
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft dzięki za komentarz. Jak powiedziałem w pytaniu, oba komputery mają tę samą konfigurację sprzętową, oba miały system Windows 7, ale jestem użytkownikiem Linuksa i nie, jego okna nie są wzdęte
Gerep
1
@ BlueRaja-DannyPflughoeft Znalazłem ciekawą rzecz, która po ustawieniu programu antywirusowego dla systemu Windows staje się znacznie bardziej opóźniona. W rzeczywistości nie ma potrzeby instalowania programów typu bloatware, wystarczy zainstalować program antywirusowy. GNU / Linux nie potrzebuje go (przynajmniej jeszcze) , a ta mała rzecz dała również znacznie większą wydajność.
Cześć Anioł

Odpowiedzi:

8

To tylko moje przypuszczenie, ale myślę, że kiedy pracujesz dla firmy, w której po skompilowaniu wszystkiego (przekonwertowaniu na dane binarne, które komputery mogą wykonać), nikt już nie widzi kodu źródłowego, jesteś bardziej leniwy, ponieważ nie ma to znaczenia, dopóki działa .
Linux jest open source, więc każdy może zobaczyć kod źródłowy, jeśli tego chce. Jeśli jesteś leniwy i piszesz naprawdę kiepski fragment kodu, który naprawdę spowolni system lub coś w tym rodzaju, Twoja reputacja idzie w parze, tak jak wszyscy to widzieli. Deweloperzy i użytkownicy. Myślę, że to jeden z powodów, dla których programiści open souyce są mniej leniwi.

Faktem jest również, że jądro systemu Windows nigdy nie zostało napisane z zamiarem stania się tym, czym jest dzisiaj (podobnie jak Linux, ale starali się zoptymalizować stare bity), a programiści po prostu zawsze dodawali i dodawali na dodatek, dopóki kod nie był tak tajemniczy, że nikt już nie mógł z niego nic zrobić. Dwie właściwości niechlujnego kodu polegają na tym, że często występuje duża nadmiarowość i że nie widać już tak łatwo powiązań między dwoma fragmentami kodu, co sprawia, że ​​nie można nawet spróbować go zoptymalizować. Tylko przykład (nie tajemniczy);

for (int i = 0; i < 20; i++)
{
    if (x == y)
    {
        if (z <= u)
        {
            goto banana;
        }
    }
}

Powyższy przykład można wykonać znacznie wydajniej;

for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
    banana ();
}
RobinJ
źródło
1
Wierzę w dziedzinie programistów, obecny konsensus jest taki, że leniwe i / lub niechlujne kodowanie jest dobrze zoptymalizowane w kompilatorach. Jednak kompilatory nie mogą pomóc w wzdęciach i spuściźnie, która może tam być - i związana z twoimi zamiarami.
Chris K,
4
Oba przykłady kodu prawie na pewno skompilują się do tej samej rzeczy (bez wywołania funkcji vs. goto) ...
BlueRaja - Danny Pflughoeft
@ BlueRaja-DannyPflughoeft Wiem, ale potrzebowałem prostego przykładu, aby to wyjaśnić.
RobinJ
5

Innym dużym, nie wspomnianym jeszcze, jest to, że Linux ma lepsze systemy plików. Wydajność NTFS z małymi plikami nie jest świetna - ext3 jest lepszy, a ext4 jest znacznie, znacznie lepszy. Jest kilka interesujących spekulacji na temat tego, dlaczego w innym pytaniu .

Podczas otwierania programu znaczna część czasu uruchamiania powoduje wczytanie kilku małych plików z dysku, dlatego bardzo ważne jest posiadanie systemu plików, który robi to szybko.

Brendan Long
źródło
4

To tylko moja opinia, ale myślę, że istnieją różne powody, dla których systemy GNU / Linux są szybsze niż Windows i nie wszystkie są związane z jądrem:

  • Oczywiście jest powód wyjaśniony przez RobinJ, jest całkiem oczywiste, że jeśli oprogramowanie jest oprogramowaniem typu open source, kod jest zwykle bardziej efektywnie napisany
  • Linux wykorzystuje bardzo zoptymalizowane komponenty, na przykład używa bardzo zoptymalizowanego harmonogramu, który dąży do maksymalizacji wykorzystania procesora.
  • Systemy Linux mniej cierpią z powodu fragmentacji pamięci
  • Systemy Linux lepiej wykorzystują pamięć główną i zwykle mają tendencję do masowego wykorzystywania pamięci podręcznej, systemy Windows zamiast tego mają tendencję do masowego wykorzystywania pamięci wirtualnej
  • Jądro Linuksa jest ciągle aktualizowane i bezużyteczne części są zwykle usuwane, chociaż Linus Torvalds powiedział, że jądro Linuksa staje się „ogromne i wzdęte”, w przeciwieństwie do aktualizacji jądra NT, które są zwykle budowane na istniejących.
Onyris
źródło
3

Wierzę, że samo jądro nie jest odpowiedzią. Windows 7 po raz pierwszy Windows zareagował na tyle, że uważam to za dopuszczalne.

Wierzę, że większa różnica prędkości jest związana z przemyśleniami @ RobinJ na temat inżynierii oprogramowania. Wszystko * w systemie Windows jest oparte na MSDN za pomocą jakiegoś szkieletu Microsoft lub innego. Jest to związane z tym, jak wielki biznes kocha Microsoft; Microsoft polega na pomaganiu różnym programom / pakietom / technologiom w rozmowach.

Dalej ... aby ułatwić programistom uwzględnienie niezbędnych elementów (i nie wymyślać na nowo koła) Microsoft pozwala twórcom tworzyć pakiety i / lub wymagać wstępnie skompilowanych bibliotek, takich jak Microsoft Visual C ++ 2008 Redistributable. Lub .Net4.0, MSSQL 2005, ad nauseum. Jest coś w rodzaju pakietów o wartości dziesięciu lat, z których programiści mogą korzystać i korzystać z nich oraz wymagać od użytkowników końcowych instalacji na komputerach z systemem Windows, aby móc korzystać z nowego oprogramowania.

Aby więc program Zyzzyx mógł zostać załadowany i uruchomiony, musi istnieć jedna lub więcej bibliotek redystrybucyjnych MSDN. Te biblioteki określają sposób interakcji programów z systemem operacyjnym.

Aby to sprowadzić, chciałbym sprecyzować, że celowa kompatybilność Windows przez dziesięciolecia oprogramowania powoduje, że jest on rozdęty i czasami wolniejszy niż porównywalny system Linux. Zauważ też, że opracowałem oprogramowanie wizualne dla systemu Windows, ale nie dla Linuksa ... nie GTK, Qt, Py, cokolwiek, więc moje założenia o mniejszym rozdęciu linux są po prostu takie.

edytowane w celu dodania: ponadto, oprogramowanie FOSS cały czas go poprawia, więc GTK będzie się poprawiać w miarę upływu czasu, a nie GTK-2005 i GTK-2008 na tym samym komputerze, podczas gdy Microsoft robi to cały czas.

* - ok, są wyjątki, jestem pewien.

Chris K.
źródło