Gość (37.30.*.*)
Wielu z nas doświadczyło tej frustracji: nowoczesny komputer, procesor z najwyższej półki, 32 GB pamięci RAM, a mimo to przeglądarka potrafi „złapać zadyszkę” przy kilkunastu otwartych kartach, a prosta aplikacja do notatek uruchamia się kilka sekund. Wydaje się to nielogiczne, biorąc pod uwagę, że komputery sprzed dekady radziły sobie z podobnymi zadaniami przy ułamku dzisiejszej mocy obliczeniowej. Przyczyna tego stanu rzeczy nie jest jedna – to splot ekonomii, architektury oprogramowania i zmieniających się priorytetów w świecie IT.
Jednym z najczęściej przytaczanych powodów jest tzw. prawo Wirth’a, które mówi, że oprogramowanie staje się wolniejsze szybciej, niż sprzęt staje się szybszy. Programiści, mając do dyspozycji ogromne zasoby, przestali walczyć o każdy bajt pamięci czy cykl procesora. Współczesny cykl tworzenia aplikacji opiera się na zasadzie „Time-to-Market” – produkt ma trafić do użytkownika jak najszybciej.
Optymalizacja kodu jest procesem czasochłonnym i drogim. Z biznesowego punktu widzenia często bardziej opłaca się wypuścić aplikację, która działa „wystarczająco dobrze” na nowym sprzęcie, niż poświęcać miesiące na dopieszczanie jej wydajności. W efekcie otrzymujemy programy, które są budowane z gotowych, ciężkich klocków, zamiast być pisane „na miarę”.
Zauważyłeś, że aplikacje takie jak Discord, Slack, Spotify czy Visual Studio Code zachowują się i wyglądają podobnie? To dlatego, że wiele z nich korzysta z frameworka Electron. W dużym uproszczeniu oznacza to, że każda z tych aplikacji uruchamia pod spodem własną, okrojoną instancję przeglądarki Chromium.
Zamiast pisać oddzielny kod na Windowsa, macOS i Linuxa, programiści tworzą jedną stronę WWW i pakują ją w „pudełko”, które udaje aplikację systemową. Jest to niezwykle wygodne dla twórców, ale zabójcze dla wydajności. Nawet jeśli nie wykorzystujesz całej pamięci RAM, każda taka aplikacja walczy o dostęp do procesora i zarządza własnymi procesami, co przy większej liczbie otwartych programów prowadzi do mikro-przycięć i opóźnień w interfejsie.
To jedno z najczęstszych pytań: „Dlaczego mam wolne 4 GB RAM-u, a system i tak się zacina?”. Odpowiedź zazwyczaj tkwi w wąskich gardłach, których nie widać na pierwszy rzut oka w menedżerze zadań:
Współczesne strony WWW to nie tylko tekst i obrazki. To potężne aplikacje wypełnione setkami skryptów. Gdy otwierasz jedną kartę, w tle mogą ładować się dziesiątki trackerów, systemów analitycznych i skryptów reklamowych. Każdy z nich rywalizuje o zasoby.
Ciekawostką jest fakt, że na wielu popularnych portalach informacyjnych kod odpowiedzialny za wyświetlenie treści stanowi zaledwie 10-20% całkowitej wagi strony i obciążenia procesora. Reszta to „nadmiarowy bagaż”, który analizuje Twoje zachowanie i próbuje dopasować reklamy w czasie rzeczywistym.
Czy jesteśmy skazani na wieczne lagowanie? Niekoniecznie. Istnieją rozwiązania zarówno po stronie użytkownika, jak i programistów, które mogą znacząco poprawić komfort pracy.
Programiści również dostrzegają problem. Powstają nowe technologie, które mają przywrócić dawną płynność:
Choć obecny trend „ciężkiego” oprogramowania jest uciążliwy, rynek powoli nasyca się aplikacjami typu Electron i zaczyna szukać optymalizacji. Wzrost popularności urządzeń mobilnych o ograniczonej energii wymusza na twórcach większą dbałość o efektywność kodu, co z czasem powinno przełożyć się na lepsze działanie aplikacji również na naszych komputerach stacjonarnych i laptopach.