
Doświadczenie korzystania z nowoczesnych komputerów może być często frustrująco paradoksalne. Możesz zainwestować znaczną kwotę w wydajne komponenty — zaawansowany procesor wielordzeniowy, najnowocześniejszą kartę graficzną i dużą ilość pamięci RAM — a mimo to czekać na proste zadania, takie jak otwieranie folderów lub przeprowadzanie wyszukiwań.
Podstawowym problemem często nie jest sam sprzęt. Nawet systemy średniej klasy są w stanie zarządzać rutynowymi operacjami z względną łatwością. Prawdziwy winowajca leży w oprogramowaniu. Na przestrzeni lat oprogramowanie stało się uciążliwe i nieefektywne, zaniedbując optymalizację wykorzystania zasobów pomimo znacznych postępów w zakresie mocy obliczeniowej i pamięci. Zamiast efektywnie wykorzystywać tę moc, nowoczesne oprogramowanie często zachowuje się tak, jakby miało do dyspozycji nieograniczone zasoby, co skutkuje rozczarowującą wydajnością.
Rozbieżność między wydajnością sprzętu i oprogramowania
Dzisiejszy sprzęt komputerowy to niezwykły skok w porównaniu z tym, co było dostępne zaledwie kilka dekad temu. Obecne procesory są misternie zaprojektowane z wieloma rdzeniami i rozległymi pamięciami podręcznymi, które optymalizują wydajność w czasie rzeczywistym. Co ciekawe, dzisiejsze smartfony mają większe możliwości obliczeniowe niż superkomputery, które zajmowały całe pomieszczenia w latach 80.
Jednostki przetwarzania grafiki (GPU) rozwinęły się jeszcze bardziej dramatycznie. Weźmy na przykład serię RTX firmy NVIDIA. Nie skupiają się one tylko na grafice, ale ewoluowały w silniki przetwarzania równoległego, które obsługują zadania związane ze sztuczną inteligencją i uczeniem maszynowym za pomocą wyspecjalizowanych rdzeni — rdzeni Tensor do wydajności obliczeń i rdzeni RT do śledzenia promieni w czasie rzeczywistym, osiągając biliony obliczeń na sekundę.
Przy tak solidnej wydajności można by oczekiwać płynnego działania użytkownika podczas obsługi komputerów. Aplikacje powinny otwierać się szybko, interfejsy powinny pozostać płynne podczas wykonywania wielu zadań jednocześnie, a przełączanie między zadaniami powinno być płynne. Niestety, często tak nie jest.
Ten scenariusz wyraźnie kontrastuje z rozwojem oprogramowania z wcześniejszych epok. Podczas tworzenia systemów operacyjnych, takich jak Windows NT 3.51, programiści skrupulatnie zarządzali pamięcią i mocą przetwarzania. Tworzyli systemy dostosowane do środowisk ze znacznie mniejszą ilością pamięci RAM niż ta, którą zużywa pojedyncza nowoczesna karta przeglądarki, wymuszając poziom wydajności, który wydaje się niemal przestarzały w dzisiejszym paradygmacie rozwoju:
Pracowałem na NT 3.51. MARZYLIŚMY o 128 MB pamięci. Próbowaliśmy działać w 8 MB, myślę, że zadowoliliśmy się 16. Teraz można by zmieścić całość w pamięci podręcznej procesora.
— John Vert (@jvert) 3 września 2024 r
Poznawanie środowiska użytkownika systemu Windows
Najbardziej widoczne przykłady opóźnień wydajności można zaobserwować w nowoczesnych systemach operacyjnych, szczególnie w systemie Windows. Częste aktualizacje funkcji firmy Microsoft niewiele robią, aby poprawić responsywność interfejsu rdzenia systemów Windows 10 i 11, co prowadzi do powszechnej frustracji wśród użytkowników. Częste skargi obejmują menu kontekstowe, które opóźniają się po kliknięciu prawym przyciskiem myszy lub okna eksploratora plików, które doświadczają stopniowego renderowania.
Co ciekawe, eksperyment przeprowadzony przez dewelopera Julio Merino kilka lat temu uwypuklił te problemy. Porównał on starsze systemy operacyjne działające na minimalnym sprzęcie z nowoczesnym systemem Windows na maszynach o wysokiej wydajności, ujawniając, jak duże były różnice w responsywności.
W jednym teście maszyna z roku 2000, wyposażona w 128 MB pamięci RAM i procesor 600 MHz, natychmiast uruchamiała aplikacje działające pod kontrolą systemu Windows NT 3.51. Natomiast znacznie nowsza i wydajniejsza maszyna — 6-rdzeniowy Mac Pro z 32 GB pamięci RAM — wykazywała opóźnienia, ponieważ elementy interfejsu użytkownika renderowały się w blokach, co ukazywało rozbieżność wydajności:
Inny uderzający przypadek, którym podzielił się deweloper Theo Browne, podkreśla ten problem. Opowiedział scenariusz, w którym otwarcie folderu zawierającego nagrania strumieniowe — proste zadanie — zajęło irytujące osiem minut, a Eksplorator Windows uległ awarii podczas kliknięcia prawym przyciskiem myszy. Winowajcą było opóźnienie spowodowane automatycznym analizowaniem metadanych przez system Windows dla każdego pliku, co poważnie utrudniało wydajność. Rozwiązaniem było wyłączenie automatycznego wykrywania typów folderów, pokazując, jak łatwo użytkownicy mogą natknąć się na poprawki problemów inherentnych dla systemu.
Nawet przy czystej instalacji, Windows jest często uwikłany w preinstalowane aplikacje, systemy telemetryczne i wyczerpujące zasoby procesy w tle. Ten bałagan prowadzi do poważnych opóźnień w wykonywaniu codziennych zadań, co pogłębia fakt, że wielu użytkowników polega na „skryptach debloat” innych firm. Takie skrypty podkreślają skalę niezadowolenia, ponieważ użytkownicy często opisują Windows jako „prawie bezużyteczny”, dopóki nie usuną niechcianych dodatków.
Funkcja wyszukiwania również ucieleśnia te frustracje. Podczas wyszukiwania ostatniego pliku możesz zauważyć, że system Windows potrzebuje niezwykle dużo czasu, aby wyświetlić wyniki, często oferując zamiast tego mieszankę nieistotnych wyszukiwań w sieci. Wielu ludzi pragnie natychmiastowych możliwości wyszukiwania podobnych do darmowego narzędzia, takiego jak „Everything”, które szybko lokalizuje pliki podczas pisania, co stanowi jaskrawy kontrast z powolną wbudowaną funkcją wyszukiwania jednej z największych firm technologicznych.
Powrót do standardów jakości?
Coraz powszechniejsze jest przekonanie, że podstawowa zasada dostarczania wysokiej jakości oprogramowania zeszła na dalszy plan w obliczu celowości. Ci, którzy pamiętają przeszłość, przypominają sobie czasy, gdy oprogramowanie, w szczególności systemy operacyjne i główne aplikacje, przechodziło rygorystyczne testy wewnętrzne przed wydaniem, często osiągając „złoty” standard jakości. Proces ten zapewniał stabilność, kompletność i gotowość po uruchomieniu.
Biorąc pod uwagę systemy takie jak Windows NT 4.0 lub Windows 2000, oczekiwano, że te wersje będą wykazywać stabilność na poziomie przedsiębiorstwa dzięki intensywnym cyklom zapewniania jakości, w tym praktyce znanej jako „dogfooding”, gdzie nawet pracownicy Microsoftu musieli sami używać oprogramowania. Aktualizacje były tradycyjnie dobrze ustrukturyzowanymi pakietami serwisowymi, w przeciwieństwie do dzisiejszego nieustannego strumienia szybkich poprawek.
Dzisiejszy model, często określany jako „ Windows as a Service ”, często wydaje się chaotyczny. Program Windows Insider, zamiast być rozszerzeniem kontroli jakości, wydaje się zlecać testowanie milionom nieopłacanych uczestników. Użytkownicy często skarżą się na błędy, zepsute funkcje i spadek ogólnej wydajności w przypadku głównych wydań — powtarzający się cykl niewydanych, niedokończonych produktów łatanych dopiero po publicznym oburzeniu. Ta praktyka nie ogranicza się do systemów operacyjnych; wiele gier wykazuje ten niepokojący trend, którego uosobieniem jest katastrofalna premiera Cyberpunk 2077.
To podejście „wydanie teraz, naprawa później” sprawiło, że wielu użytkowników kwestionuje filozofię rozwoju dużych studiów. Decyzja o opóźnieniu GTA 6 może odzwierciedlać świadomość Rockstara potencjalnych pułapek pospiesznych wydań.
Tę samą mentalność, że „nigdy nie jest to w pełni ukończone”, widać w powolnym przeglądzie starszych systemów, takich jak Panel sterowania, na rzecz nowej aplikacji Ustawienia. Proces ten rozpoczął się w 2012 r.wraz z systemem Windows 8, ale nadal trwa trzynaście lat później.
Wyzwania w zakresie wydajności sieci Web
Problemy z wydajnością nowoczesnego oprogramowania wykraczają poza systemy operacyjne komputerów stacjonarnych; ujawniają się również w platformach internetowych. Pomimo udoskonaleń w zakresie łączności i możliwości urządzeń, użytkownicy często napotykają na nadmiernie powolne i wymagające dużych zasobów doświadczenia w sieci. Witryny często ładują się wolno i mogą wydawać się mniej responsywne w porównaniu do swoich poprzedników.
To opóźnienie wynika z rosnącej złożoności aplikacji internetowych i powszechnego stosowania ciężkich frameworków JavaScript. Podczas gdy narzędzia takie jak React i Next.js znacznie zwiększają funkcjonalność, ich zastosowanie na prostszych stronach internetowych może powodować zawyżone rozmiary kodu i opóźnione czasy ładowania. Jak na ironię, często wynika to z preferencji programistycznych opartych na wygodzie, a nie z rzeczywistych wymagań projektu.
Aplikacje stworzone przy użyciu technologii internetowych do użytku na komputerach stacjonarnych — takie jak narzędzia oparte na Electron, takie jak Slack — często cierpią również na „rozdęcie”.Każda aplikacja zawiera wersję przeglądarki internetowej, co powoduje narzut, który spowalnia czas uruchamiania i zwiększa zużycie zasobów.
Niemniej jednak istnieją wyjątkowe przykłady, które pokazują, że wydajność może się rozwijać przy różnych priorytetach rozwoju. Co godne uwagi, strona internetowa McMaster-Carr zyskała uwagę dzięki szybkim czasom ładowania, co ostro kontrastuje z nowoczesnymi, atrakcyjnymi wizualnie witrynami zbudowanymi przy użyciu bardziej aktualnych technologii.
jak to możliwe, że firma założona ponad 100 lat temu ma najszybszą stronę w internecie? pic.twitter.com/y97Eiq5Bmv
— Kenneth Cassel (@KennethCassel) 17 października 2024 r.
McMaster-Carr osiągnął to, stosując podstawowe techniki, takie jak hardy server-side rendering, agresywne strategie prefetchingu, wielowarstwowe podejścia do buforowania i zdyscyplinowana optymalizacja zasobów. Ich zaangażowanie w szybkość i użyteczność przewyższa atrakcyjność nowoczesnych ram, pokazując, jak konieczność nadal może dyktować projekt.
Opcja Linux: Mieszanka
W poszukiwaniu płynniejszego doświadczenia komputerowego wielu użytkowników rozważa przejście na alternatywne systemy operacyjne, takie jak Linux. Liczne dystrybucje, szczególnie te wykorzystujące lekkie środowiska graficzne, takie jak XFCE lub LXQt, mogą znacznie poprawić wydajność na starszym sprzęcie, sprawiając, że systemy wydają się szybsze dzięki niższemu narzutowi niż bardziej kompleksowe rozwiązania, takie jak Windows.
Jednak przejście na Linuksa stwarza wyzwania w zakresie zgodności dla wielu użytkowników, szczególnie jeśli chodzi o popularne profesjonalne narzędzia. Wiele niezbędnych aplikacji, takich jak Adobe Creative Cloud i Microsoft Office, nie ma natywnych wersji Linuksa, co powoduje przeszkody, które często prowadzą do krótkich wypadów do Linuksa, zanim użytkownicy powrócą do Windowsa.
Przyczyny rozrostu oprogramowania i jego powolności
Przy całym tym zaawansowanym sprzęcie i demonstracyjnych strategiach optymalizacji oprogramowania i wydajności sieci, trzeba się zastanowić, dlaczego współczesne aplikacje często wydają się tak powolne i rozdęte. Odpowiedź może być złożona, ale wyróżnia się kilka kluczowych czynników:
- Model „Konsument jako tester wersji beta”: Główne firmy zajmujące się oprogramowaniem często przechodzą z gruntownej kontroli wewnętrznej do publicznego testowania wersji beta, polegając na opiniach użytkowników, aby finalizować funkcje w środowiskach na żywo. Oznacza to wyraźne odejście od czasów, gdy standardem były gruntownie sprawdzone wersje „Gold”.
- Skup się na szybkości, nie na jakości: Obecna presja związana z szybkim wydawaniem funkcji często stawia doraźność ponad staranną pracę, co pozwala na dominację rozdętych struktur zamiast angażowania się w szczegółową optymalizację wydajności.
- Nadmierna abstrakcja: Użycie wielu warstw abstrakcji upraszcza proces tworzenia oprogramowania, ale może wiązać się z niepotrzebnym obciążeniem wydajności, jeśli nie zostanie odpowiednio zoptymalizowane.
- Umiejętności i specjalizacja programistów: Umiejętności wymagające optymalizacji, takie jak zarządzanie pamięcią i wydajne algorytmy, stały się mniej popularne wśród programistów w porównaniu z technikami integracyjnymi i najnowszymi frameworkami, których można się nauczyć łatwiej.
- Modele biznesowe: Wiele dzisiejszych rozwiązań programistycznych zawiera funkcje przeznaczone na potrzeby reklam, telemetrii i zaangażowania użytkownika, co powoduje nieuzasadnioną złożoność, która odciąga uwagę od podstawowych funkcjonalności.
- Rosnąca złożoność: Rosnące wymagania dotyczące bezpieczeństwa, łączności internetowej i obsługi zaawansowanej grafiki stwarzają nieodłączne wyzwania i problemy ze skalowalnością.
Podsumowanie: Sprzęt nie zawsze jest winowajcą
Następnym razem, gdy Twój komputer będzie wydawał się powolny nawet podczas rutynowych zadań, zatrzymaj się, zanim rozważysz uaktualnienie do nowego sprzętu. Twój obecny system prawdopodobnie posiada możliwości, które, choć imponujące w porównaniu do historycznych standardów, są przytłaczane przez nieefektywne i rozdęte oprogramowanie.
Pilną potrzebą jest ponowne priorytetowe traktowanie wydajności, stabilności i jakości w rozwoju oprogramowania. Kluczowe jest, aby kultura rozwoju przesunęła się w kierunku udoskonalania wydajności i doświadczenia użytkownika, respektując zarówno ograniczenia czasowe, jak i zasobowe użytkownika. Aby naprawdę dostarczać oprogramowanie, które spełnia potrzeby użytkowników, należy ponownie skupić się na dostarczaniu solidnych i wydajnych rozwiązań.
Dopóki taka zmiana nie nastąpi, użytkownicy będą nadal zmagać się z niską wydajnością nawet na najmocniejszych maszynach, co często prowadzi ich do przekonania, że modernizacja jest jedyną opcją.
Dodaj komentarz