Dlaczego mając coraz szybsze komputery, doświadczamy coraz wolniejszego działania aplikacji?

Zdjęcie dla artykuły pt. Dlaczego mając coraz szybsze komputery, doświadczamy coraz wolniejszego działania aplikacji?

Ostatnio rozważałem szybki rozwój technologiczny naszych czasów. Zastanawiałem się nad wnioskami płynącymi z prawda Moore’a. Prawo Moore’a to obserwacja, że co dwa lata liczba tranzystorów w układach scalonych się podwaja. Zasadę tę stosuje się także do mocy obliczeniowej komputerów, pojemności dysków twardych, przepustowości sieci komputerowych (w tym połączenia Internetowego). Czy to nie oznacza, że wszystkie aplikacje na Twoim smartfonie powinny uruchamiać się i działać dwukrotnie szybciej, jeśli co dwa lata wymienisz urządzenie na nowe?

Niekoniecznie. Faktem jest, że cykl wymiany telefonu wynosi obecnie średnio 2 lata, ale wymagania sprzętowe aplikacji (w szczególności systemów operacyjnych) rosną. Weźmy na przykład grę Wolfenstein 3D wydaną na system będący prekursorem systemu Windows, czyli DOS. Wymagania sprzętowe (wymagania, które musi spełnić sprzęt, by poprawnie obsłużyć program lub grę) to: jednordzeniowy procesor o częstotliwości taktowania 25 MHz – laptop, którego wykorzystuję w tym momencie, posiada dwurdzeniowy procesor o częstotliwości 2,7 GHz (1080 razy wyższe taktowanie!), a ta częstotliwość dynamicznie wzrasta do ponad 3 GHz, jeśli to potrzebne. Kolejny parametr, którego dotyczy prawo Moore’a, czyli ilość pamięci RAM. Wolfenstein 3D wymagał do poprawnego funkcjonowania 1 MB pamięci operacyjnej, a średniej klasy komputery obecnie korzystają z 4 GB lub 8 GB (4 000 do 8000 razy więcej!).

Ograniczenia prawa Moore’a

Czy szybkość działania gier się zwiększyła? Nie. Czy czas dostępu do plików na dyskach uległ skróceniu? Znowu nie. Czy szybkość dostęp do pamięci RAM skrócił się? Po trzeci i ostatni raz nie. Jak to się dzieje, że wszystkie istotne z punktu widzenia końcowego użytkownika parametry się pogarszają pomimo ogólnego szybkiego poprawiania się cech technicznych? Udzieliłem już bardzo skrótowej odpowiedzi na to pytanie: wymagania techniczne aplikacji wciąż rosną. Spróbujmy zrozumieć to dokładniej. Zatem: zarówno ilość pamięci operacyjnej jak i zapotrzebowanie na pamięć operacyjną rośnie do podobnym tempie. Zdobyliśmy wyższą prędkość transferu w Internecie, więc pozwalamy sobie na przesyłanie większej ilości danych, co równoważy czas, który zaoszczędzilibyśmy przy mniejszym wykorzystaniu sieci. Identycznie wygląda to w przypadku mocy obliczeniowej, ilości pamięci na dyskach czy liczbie tranzystorów w naszych komputerach, tabletach czy telefonach.


    

Rosnące wymagania sprzętowe gier i aplikacji a wydajność


Istnieje jednak sposób, by dostrzec na własne oczy skutki prawa Moore’a. W ramach eksperymentu polecam uruchomić aplikację sprzed 10 lat na obecnym urządzeniu. Uprzedzając to doświadczenie, powiem, że jest kolosalna różnica. Przykładowo uruchamiając grę Croc: Legend of the Gobbos, wydaną w roku 1997, zobaczymy, iż nie obciążyłaby procesora czy karty graficznej prawie wcale. Działająca na moim komputerze przeglądarka Firefox i program Word potrzebują (wraz z system operacyjnym) o ponad 153 razy więcej pamięci RAM niż gra, do której uruchomienia potrzeba było nietaniego komputera lub konsoli PS1.


    

Płynie z tego prosta lekcja i wbrew pozorom nie brzmi ona: „Korzystaj z aplikacji sprzed kilkunastu lat, żeby cieszyć się ogromną wydajnością”. To byłbym absurd. Proponuję taki podwójny wniosek. Po pierwsze, developerze, projektuj aplikację, której wymagania nie będą aż tak wysokie. Twój program nie musi mieć tych wszystkich ekstrawaganckich, a zarazem zbędnych funkcji, których użyje góra pięciu użytkowników. Po drugie, użytkowniku, jeśli zależy Ci na wydajności, podaruj sobie wszystkie śliczne animacje i efekty. Zmniejsz trochę oczekiwania, używaj „lżejszych” aplikacji, a Twój komputer podziękuje Ci za to wydajnością.

Wniosek: słaba optymalizacja

Istnieje jeszcze inna kwestia dotycząca programistów, lecz nie tylko (czytaj następny paragraf). Koder, który wie, że użytkownik posiada danej klasy sprzęt może nie skupiać się na optymalizacji. W rezultacie aplikacja działa na starszych urządzeniach ze strasznym skutkiem: jakby chciała, a nie mogła. Jeśli jednak ten projekt rozrośnie się i gnuśny programista nie zajmie się optymalizacją kodu, to na potężniejszych wydajnościowo urządzeniach zadziała ona także mozolnie. Zatem kolejną przyczynę, słabej wydajności aplikacji mimo zwiększających się możliwości technicznych, stanowi słaba optymalizacja oprogramowania. Na szczęście takie sytuacje to raczej ewenement, częściej rzadkość niż powszechną praktykę.


    

Kwestia optymalizacji dotyczy szczególnie telefonów z Androidem. Fabrycznie wgrana wersja systemu jest przystosowana pod konkretny model. Jednak po pewnym czasie od wydania telefonu wykrywa się luki systemowe, czyli błędy związane z bezpieczeństwem systemu. By naprawić luki systemowe, wydaje się aktualizacje. Wprawdzie rozwiązują one problemy z bezpieczeństwem, jednakże tworzą nowe usterki, a konkretnie związane z optymalizacją. O ile pierwotna wersja systemu wgrana na urządzenie została odpowiednio przystosowana do współpracy z nim, o tyle aktualizacje nie muszą spełniać tego wymogu. Zatem okazuje się, że po pobraniu i zainstalowaniu nowej wersji systemu telefon czy tablet z Androidem działa czasem wolniej. Teraz już rozumiesz, dlaczego tak się dzieje. Mimo tego zalecam instalowanie aktualizacji, gdy tylko się pojawią, gdyż nierobienie tego naraża bezpieczeństwo naszych plików i danych przechowywanych w pamięci urządzenia.

Wniosek: ludzkie postrzeganie świata

Jeszcze inne ciekawe wyjaśnienie ma związek z ludzką percepcją. Możliwe, że czasem sami sobie wmawiamy spadek wydajności! Wyobraź sobie, że trzymasz w dłoniach jeden ze starszych modeli telefonu. Nie ma znaczenia czy to iPhone, Symbian, Android czy Windows Phone. Korzystając z aplikacji, widzisz, że działają one w miarę płynnie, tylko od czasu do czasu się zawieszają. Telefon z powodu niewielkiej ilości pamięci operacyjnej często działa zbyt wolno. A teraz weź pod uwagę nowszy model telefonu z tym samym systemem. Aplikacje działają zdecydowanie płynniej, bardzo rzadko uświadczysz artefaktów takich jak zawieszenie aplikacji czy spowolnienie działania systemu. Niedługo po wymianie telefonu różnica zdawać się będzie kolosalna. Potem przyzwyczaisz się i normalna będzie według Ciebie całkowita płynność. Zatem zmieniło się Twoje postrzeganie. Jeśli na nowszym telefonie raz na jakiś czas zawiesi się aplikacja, zaczniesz na to intensywnie zwracać uwagę. Obiektywnie nie ulegnie zmianie wydajność, ale Twój subiektywny umysł przekona sam siebie, że zaszło spowolnienie. W tym celu będzie poszukiwał każdej oznaki wolnego działania, np. wolniejsza niż zwykle animacja w menu systemowym, a zignoruje normalne zachowania, np. płynne działanie kilku aplikacji naraz. Świadczy to o tym, że niekoniecznie każde „powolne działanie” naszego telefonu koniecznie posiada racjonalne wyjaśnienie w mierzalnej wydajności samego urządzenia.

Summa summarum

    

Podsumowując, mimo w charakterystyczny sposób rosnącej wydajności sprzętu komputerowego, która daje się zaklasyfikować jako prawo Moore’a, programy i gry nie działają coraz szybciej i nie o wiele szybciej. Dzieje się tak, ponieważ 1) zwiększają się wymagania sprzętowe aplikacji, 2) czasem optymalizacja oprogramowanie jest zwyczajnie niedostateczna oraz 3) z powodu naszej łatwości do przyzwyczajania się do lepszych warunków. Nie twierdzę, że programy nie działają szybciej niż w przeszłości, ale iż tego procesu nie da się przedstawić w sposób liniowy na wykresie (w przeciwieństwie do wielokrotnie wspominanego już prawa Moore’a).

Dziękuję Ci za poświęcony czas i zachęcam do zapoznania się z innymi moimi artykułami. Jeśli interesuje Cię tematyka, którą poruszam, to polecam zapisać się do newslettera. Pamiętaj, że swoją opinię zawsze możesz wyrazić w komentarzu pod wpisem.


KOMENTARZE

Dodaj swój komentarz




Zdjęcie dla atykuły o tytule: Autorytety, umiar i czas na życiowe decyzje

Autorytety, umiar i czas na życiowe decyzje

Zdjęcie dla atykuły o tytule: Przed spełnieniem marzeń ciągle coś Cię rozprasza. Oto jak to zmienić…

Przed spełnieniem marzeń ciągle coś Cię rozprasza. Oto jak to zmienić…

Zdjęcie dla atykuły o tytule: Nieskończone szczęście jest niemożliwe. Jednak jest coś, co możesz zrobić

Nieskończone szczęście jest niemożliwe. Jednak jest coś, co możesz zrobić

Zdjęcie dla atykuły o tytule: Chcesz być lepszym człowiek? Zorganizuj… podróż do wnętrza siebie

Chcesz być lepszym człowiek? Zorganizuj… podróż do wnętrza siebie

Zdjęcie dla atykuły o tytule: 5 prostych trików, by wyglądać lepiej. Numer dwa Cię zaskoczy!

5 prostych trików, by wyglądać lepiej. Numer dwa Cię zaskoczy!

Zdjęcie dla atykuły o tytule: Jak zdobyć przyjaciół? Najpełniejsza analiza podręcznika kontaktów międzyludzkich

Jak zdobyć przyjaciół? Najpełniejsza analiza podręcznika kontaktów międzyludzkich

Zdjęcie dla atykuły o tytule: Punkt widzenia zależy od punktu… myślenia. Czyli o tym, jak widzimy „buzię w tęczu” i jak fryzjer leczy z lęku przed śmiercią

Punkt widzenia zależy od punktu… myślenia. Czyli o tym, jak widzimy „buzię w tęczu” i jak fryzjer leczy z lęku przed śmiercią

Zdjęcie dla atykuły o tytule: 9 skutecznych sposobów na motywację. Poznaj tajniki wiedzy o motywacji!

9 skutecznych sposobów na motywację. Poznaj tajniki wiedzy o motywacji!

Zdjęcie dla atykuły o tytule: Zaprojektuj sobie wymarzone życie! - czyli o wpływie środowiska i life designie

Zaprojektuj sobie wymarzone życie! - czyli o wpływie środowiska i life designie

Zdjęcie dla atykuły o tytule: 5 wspaniałych cech charakteru, które powinieneś w sobie wykształcić

5 wspaniałych cech charakteru, które powinieneś w sobie wykształcić

Zdjęcie dla atykuły o tytule: Dlaczego sławni ludzie są sławni? - czyli o teoriach zdobywania sławy

Dlaczego sławni ludzie są sławni? - czyli o teoriach zdobywania sławy