Ważne

Szybki mobilny OS – co to oznacza?

W komentarzach pod poprzednim moim wpisem wywiązała się krótka dyskusja na temat tego czym jest szybkość i płynność systemu operacyjnego. Nie chodzi o to, żeby porównywać i pastwić się nad niektórymi systemami, ale usystematyzować pojęcia.

Płynność animacji (klatkowanie)

To częsta przypadłość. Większość systemów operacyjnych ma wbudowane domyślne animacje przy otwieraniu aplikacji, przełączaniu się między nimi czy choćby rozwijaniu belki powiadomień. Mechanizm ten nie zawsze działa jak należy. Czasami liczba klatek na sekundę zauważalnie spada, co powoduje utratę wrażenia płynności. Warto zaznaczyć, że klatkowanie zwykle nie spowalnia interakcji z systemem i jest bardziej mankamentem estetycznym niż prawdziwie wydajnościowym. Z mojego doświadczenia wynika, że ta przypadłość dotyka bardziej sprzęty z Androidem niż urządzenia z iOS czy Windows Phone.

Lagi

Często wszelkie spowolnienia czy braki płynności określa się mianem właśnie lagów. Według mnie lag (patrząc na znaczenie tego angielskiego słowa) to sytuacja, kiedy interakcja z systemem operacyjnym nie nadąża za naszą interakcją z ekranem dotykowym urządzenia. Najlepszym przykładem jest pisanie na klawiaturze, którego efektem jest spóźnione pojawianie się liter na ekranie. Według mnie, to jeden z najbardziej uciążliwych objawów „spowolnienia” systemu. Wasze opinie mogą być różne, ale rozbieżność między tym co robię na ekranie, a odpowiedzią systemu, jest dla mnie bardzo frustrująca i zabijająca całe „user experience”.

Szybkość uruchamiania i przywracania aplikacji

Windows Phone 7 chodził zazwyczaj płynnie, ale długie czasy otwierania palikacji, szczególnie tych bardziej złożonych, były niewątpliwie słabym punktem tego systemu. Słabsze urządzenia z WP8.1 dalej borykają się z tym problemem. Ich użytkownicy doskonale znają długie ekrany ładowania z napisem „loading…” czy „resuming…”. Nowe urządzenia z iOS nie mają tego problemu, ale głównie z uwagi na przyzwoitą specyfikację i świetną integrację systemu ze sprzętem. Budżetowe Androidy, według mojego doświadczenia, wypadają w tym porównaniu trochę lepiej niż budżetowce z Windows Phone. Bardzo słabo wypadają też starsze iPhone’y, które po aktualizacjach systemu stały się mocno ociężałe.

Płynność i szybkość w grach

Gry to osobna kwestia, bo dzięki OpenGL czy DirectX mają dostęp do niższych warstw systemu. Podstawowym parametrem płynności gier czy dotwarzania renderowanej grafiki 3D jest liczba klatek na sekundę. Oczywiście system operacyjny ma na to pewien wpływ, ale zdecydowanie najbardziej będzie się liczyła tu wydajność rdzeni procesora i grafiki. Żadne „optymalizacje systemu” nie pomogą przeskoczyć bariery wydajności, jeśli sprzęt nie będzie dawał rady. Druga sprawa to szybkość ładowania gier, która w dużej mierze zależy od procesora, szybkości pamięci wewnętrznej oraz zajętości pamięci RAM.

I chyba bez komentarza.

Jeżeli znalazłeś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij tutaj. Możesz też zgłosić błąd pisząc na powiadomienia@tabletowo.pl.

Komentarze

  • The_Ecki

    iOS ma podobny system „wielozadaniowości” co Windows Phone.

    • Czyli bardziej kontrolują na co aplikacje mogą sobie pozwolić w tle?

      • krzysiekb92

        mała uwaga z mojej strony. Z tego co mi wiadomo (wiedza praktyczna) w iOS nie ma takiej samej wielozadaniowości, jak w Androidzie. W tym przypadku aplikacja/gra jest „zamrożona” w momencie, np. pauzy, potem wracasz do tej gry w tym samym momencie. Oczywiście niektóre aplikacje działają w tle, ale to zazwyczaj Spotify, odtwarzacz muzyki i np. wideo. W WP jest tak samo… W tej kwestii to żadna wielozadaniowość moim zdaniem. Jednakże da się uruchomić działanie wszystkich aplikacji w tle, dzięki wtyczce z Cydii, powoduje to zbyt szybki drenaż baterii bo system nie jest do tego „przyzwyczajony”.

        • Sytuacja moim zdaniem wygląda jeszcze inaczej. Android domyślnie pozwala aplikacjom chodzić w tle dokładnie tak samo jak podczas wyświetlania na ekranie (choć to też powoli się zmienia – patrz Project Volta). W WP i iOS możesz też to wymusić, ale musi to być świadoma decyzja programisty, który odpowiednio to zakoduje. Co jest rozwiązaniem dużo bezpieczniejszym.

          • Twój_Stary

            O! Głąb skorygował swoje banialuki dot. Projektu Volta – dziękuję za uznanie i zachęcam do dalszego pogłębiania wiedzy :D

          • Gosc

            W WP w tle można używać tylko bardzo mocno ograniczonego api, patrz code sample dla aplikacji stopera. W momencie „minimalizacji” aplikacji trzeba zapisać zegar stopera i aktualny czas systemowy. Po powrocie do aplikacji musimy wyliczyć ile czasu minęło od momentu zagrożenia aplikacji i zaktualizować licznik stopera

          • Peter9

            a jak to wygląda w Androidzie? tam aplikacja cały czas działa w tle?

      • The_Ecki

        Aplikacje mają limit przypisane pamięci. W Windows Phone jest tak z IE kiedy wywala chamsko aplikacje podczas przeglądania większych stron. I to na telefonach z 1 GB RAM.

  • sudione

    Nie ma czegoś takiego jak multitasking w smartfonach opartych o iOS, Windows Phone (Mobile 10), czy Android! Najpierw wchodzimy na YouTube i sprawdzamy jak sprawował się smartfon o nazwie NOKIA N9, a potem klikamy ten link -> http://www.jollausers.com/2013/07/why-sailfish-is-better-as-a-modern-os-here-is-a-comparison/ …..i wszystko staje się jasne. Jaki system operacyjny można nazwać nowoczesnym, bo tekst Pana redaktora Piotra jest niestety o niczym.:(

  • b@t

    mam pytanie o wage systemu niedawno sciagalem cyanogenmod 12.1 na lg pad 7 i ma on 240mb bez google apps oczywiscie a stockowy rom od lg ma ponad 1gb i moje pytanie czy teraz moj system ma okolo 240mb czy tego cyanogena trzeba traktowac jako nakladke na stocka bo wolnego miejsca mam tyle samo co na stocku.

    • Nie do końca. CM opiera się na Android Open Source Project (open-source’owy stock Android bez Google Services), czyli w zasadzie to jest pewna ODMIANA stocka. Ale na pewno nie nakładka graficzna typu TouchWiz.

      • b@t

        czyli po zainstalowaniu cyanogena stockowy rom nie został zastapiony w calosci (nie zniknął z urzadzenia).

        • Moim zdaniem został zastąpiony, ale nie zajmuje się modowaniem/flashowaniem, wiec głowy nie dam.

          • customRomFanatic

            został zastąpiony, cm to żadna nakłada tylko uszyty nowy dany numer romu bazowany na aosp. cm bierze aosp i szyje go po swojemu, po czym wypuszcza do użytku. Ja jednak wole AOSP konfigurować go pod siebie różnymi tweakami i ustawieniami już na urządzeniu, jednak cm to nie do końca jest czysty AOSP. a tylko czysty AOSP zapewnia nam tzw „czysty” start w przyszłość jeśli chodzi o płynność.

        • barilla

          został zastąpiony, tylko ze wbudowana pamięć ma na sztywno przypisaną wielkość partycji zatem instalacja softu zajmującego mniej miejsca nie powiększy ilości miejsca na aplikacje. Da się zrepartycjonować pamięć, ale jest to ryzykowna czynność; nie polecam ;)

          • b@t

            ok to git bo chodziło mi o calkowite pozbycie sie stocka, czyli teoretycznie mam wiecej miejsca na aplikacje na pamieci wewnetrznej.

    • niconozomu

      Nie wiem jak jest u lg ale u samsunga na system jest oddzielna partycja. Więc nawet jeśli cm zajmuje dużo mniej miejsca to nie ma to wpływu na ilość pamięci dostępnej dla użytkownika.

  • uru28

    Fajnie zebrane/podsumowane ;) Ciekawy byłby tekst o sztuczkach jakich producenci sprzętu i softu używają do maskowania różnych mankamentów :D Grafika towarzysząca ładowaniu w aplikacjach lub też samych aplikacji niejedno krotnie wyświetla się tak, a nie inaczej nie ze względu na „klatkowanie” czy ze względu na lagi (jak zwał tak zwał) ale właśnie dla tego że aplikacja ładuje wciąż dane…A że lepiej wygląda aktywna grafika niż napis LOADING…. No i w kwestii samych gier to chyba lepiej by aplikacja testowała sprzęt na którym jest zainstalowana i dobierała optymalne parametry (jakość grafiki/ilość klatek) do sprzętu,pytanie ile to zachodu dla developera…

    • Długie animacje to pryszcz. iOS robi screenshota przy każdym opuszczeniu aplikacji i wyświetla statyczny jpg przy ponownym jej przełączeniu (zamiast ekranu „loading”) ;)

      • baltin

        to samo jest chyba w Safari (gest powrotu do poprzedniej strony) – już się cieszę, że to tak szybko działa, a tu zonk;P

        • mamrot

          Nie wiem o czym piszesz ale jestem pewien, że bredzisz. Jaki screenshot w safari? Przesuwasz paluchem od lewej i jesteś na poprzedniej stronie, ułamek sekundy. Następnym razem zanim zaczniesz dzielić się z nami swoją „wiedzą” bądź pewien.

      • Majk

        MADE MY DAY PIOTREK! :D THX!

      • vvaz

        Nie tylko. W paczce z programem developer musi dać ekran ‚powitalny’ niby normalnie działającej aplikacji by przy pierwszym uruchomieniu (lub późniejszych problemach ze screenshotem automatycznym) też tak się działo

  • A co to jest multitasking?

  • D.

    Kilka uwag z perspektywy dewelopera.

    Powodów przycinania Androida jest wiele, ale najważniejszy jest taki, że główny wątek uruchomionej aplikacji (czyli procesu), jest jednocześnie wątkiem GUI (renderującym). Problem jest taki, że ten wątek ma normalny priorytet (a nie wysoki). Każdy kod który wykonuje się dłużej niż 16 milisekund (czas trwania jednej klatki przy 60fps) powoduje zgubienie danej klatki i efekt „przycięcia”.

    Dlatego, każda operacja trwająca dłużej niż 16 ms, powinna być wywołana asynchronicznie w osobnym wątku (najlepiej o obniżonym priorytecie, aby „sztucznie” zawyżyć ważność głównego wątku – sztuczka znana z czasów pisania aplikacji na desktopowej Javie).

    Oczywiście dany kod, na wolnym procesorze będzie się wykonywał np. 50 ms a na szybkim 5 ms. Powiedzmy sobie szczerze, że wywoływanie asynchronicznego kodu w Androidzie nie jest najwygodniejsze (np. w porównaniu z C#/.NET – na Windows), dlatego programiści często idą na skróty i wywołują kod, który zgodnie z regułami sztuki powinien być uruchomiony w osobnym wątku (np. czytanie z pliku, operacja na bazie SQLite, wypełnienie listy elementów adaptera itp) w głównym wątku.

    W iOS (który mniej znam) jest dedykowany wątek GUI, który ma najwyższy priorytet. Każde żądanie zmiany wyglądu w interfejsie GUI jest przekazywane do tego dedykowanego wątku, dzięki czemu użytkownik iOS znacznie rzadziej ma okazje doświadczyć krótkotrwałego „przycięcia”.

  • jednak literówka do poprawy: „długie czasy otwierania palikacji,” :)

  • czyli procesy działające w tle to nie multitasking… no proszę człowiek się całe życie uczy

  • xgcxdg

    Dzięki za wytłumaczenie mi co to znaczy os. Naprawdę wszyscy potrzebują takiech tekstów………

Tabletowo.pl
Logowani/Rejestracja jest chwilowo wyłączona