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 ();
}
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.
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.
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.
Odpowiedzi:
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);
Powyższy przykład można wykonać znacznie wydajniej;
źródło
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.
źródło
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:
źródło
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.
źródło