Już na początku roku przedstawiciele Apple'a twierdzili, że nowy iOS 12 skupi się głównie na optymalizacji, a na bardziej fundamentalne wieści będziemy musieli poczekać do przyszłego roku. Prawie to samo powiedziano podczas poniedziałkowego przemówienia, w części poświęconej iOS 12. Tak, w nadchodzącej iteracji iOS rzeczywiście pojawią się pewne nowości, ale główną rolę odegra optymalizacja, która szczególnie ucieszy właścicieli starszych maszyn ( o tym, jak iOS 12 tchnął życie w mój iPad Air 1. generacji będzie można przeczytać już w ten weekend). Wczoraj w ramach programu WWDC odbył się wykład, podczas którego dokładniej wyjaśniono, co Apple zrobił, aby nowy system działał zauważalnie szybciej.
Jeśli naprawdę interesuje Cię ten temat i chcesz dowiedzieć się, jak w praktyce działają poszczególne elementy iOS, polecam obejrzeć nagranie wykładu. Trwa około 40 minut i jest dostępny na oficjalnej stronie Apple pod tytułem Sesja 202: Co nowego w Cocoa Touch. Jeśli nie chcesz tracić trzech kwadransów na oglądanie nagrania konferencji, możesz przeczytać bardziej zwięzły zapis tutajma jednak charakter nieco techniczny. Dla pozostałych spróbuję uproszczonego podsumowania poniżej.
Obejrzyj zdjęcia z prezentacji iOS 12:
W przypadku iOS 12 Apple zdecydowało się skupić na optymalizacji, ponieważ wielu użytkowników skarżyło się na debugowanie (szczególnie w połączeniu z iOS 11). Zdecydowana większość negatywnych reakcji dotyczyła pewnego rodzaju „powolności”, „zawieszenia” i „niepłynności” systemu i jego animacji. Programiści Apple'a zagłębili się zatem w same podstawy i pokonali cały system animacji w iOS. Wysiłek ten polegał głównie na trzech głównych poprawkach, dzięki którym iOS 12 działa tak, jak działa. Programistom udało się odkryć wady obecne w iOS od iOS 7.
1. Przygotowanie danych
Pierwszą zmianą jest optymalizacja tzw. API Cell Pre-fetch, które po prostu zadbało o swego rodzaju przygotowanie danych, zanim system faktycznie ich potrzebował. Niezależnie od tego, czy były to obrazy, animacje, czy inne dane, system musiał za pomocą tego API wstępnie odtworzyć w pamięci niezbędne pliki, aby były one dostępne w momencie ich użycia i tym samym nie wystąpiły skoki obciążenia procesora, co mogłoby powodować wyżej wymienione problemy z płynnością. Jak się okazało podczas dokładnego audytu tego algorytmu, nie działał on do końca poprawnie.
W niektórych przypadkach przygotował dane wcześniej, w innych nie. W innych przypadkach system ładował dane mimo, że były już przygotowane w pamięci podręcznej tego API i czasami dochodziło do swego rodzaju „podwójnego ładowania”. Wszystko to powodowało spadki FPS podczas animacji, przycinanie i inne niespójności w działaniu systemu.
2. Natychmiastowa wydajność
Druga zmiana to modyfikacja zarządzania energią jednostek obliczeniowych w urządzeniu, czy to CPU, czy GPU. We wcześniejszych wersjach systemu procesor potrzebował zauważalnie więcej czasu na zauważenie zwiększonego zapotrzebowania na aktywność, a tym samym zwiększenie częstotliwości pracy. Poza tym to przyspieszanie/zwalnianie procesora odbywało się stopniowo, więc w wielu przypadkach zdarzało się, że system potrzebował zasilania do jakiegoś zadania, ale nie było ono od razu dostępne, i znów pojawiały się spadki animacji FPS itp. Zmienia się to w iOS 12, ponieważ to tutaj krzywa wydajności procesorów została dostosowana znacznie bardziej agresywnie, a stopniowy wzrost/spadek częstotliwości jest teraz natychmiastowy. Spektakl powinien zatem być dostępny wtedy, gdy jest potrzebny.
3. Bardziej doskonały automatyczny układ
Trzecia zmiana dotyczy interfejsu, który Apple wprowadził w iOS 8. Jest to tzw. framework Auto-layout, który wszedł na iOS w momencie, gdy Apple zaczął zwiększać rozmiar wyświetlaczy swoich iPhone'ów. Framework dbał o to, aby wygląd interfejsu użytkownika był poprawny niezależnie od rodzaju i wielkości wyświetlacza, na którym renderowane były dane. Jest to swego rodzaju oparcie, które pomaga programistom optymalizować swoje aplikacje (i nie tylko, framework ten stanowi integralną część systemu iOS jako takiego i dba o prawidłowe wyświetlanie wszystkich części interfejsu użytkownika) dla kilku rozmiarów wyświetlaczy. Ponadto cały ten system jest w dużej mierze zautomatyzowany. Po szczegółowym zbadaniu okazało się, że jego działanie dość obciąża zasoby systemowe, a największy wpływ na wydajność miał iOS 11. W iOS 12 wspomniane narzędzie przeszło znaczne przeprojektowanie i optymalizację, a w obecnej formie jego wpływ na działanie systemu jest znacznie mniejszy, co w dużym stopniu uwalnia zasoby procesora/GPU na potrzeby innych aplikacji i narzędzi.
Jak widać, Apple naprawdę wziął procesy optymalizacji ze szczytu i naprawdę widać to w produkcie końcowym. Jeśli masz zeszłoroczne iPhone'y lub iPady, nie spodziewaj się zbyt wielu zmian. Ale jeśli posiadasz urządzenie dwa, trzy, cztery lata, zmiana z pewnością będzie więcej niż zauważalna. Mimo że iOS 12 jest obecnie w początkowej fazie, już działa znacznie lepiej niż jakakolwiek wersja iOS 1 na moim iPadzie Air pierwszej generacji.
Nie uwierzę, dopóki nie zobaczę tego na własne oczy. Że nowy iOS nie będzie potrzebował najnowszego sprzętu? Oto, na co marketerzy łajają deweloperów…
Działa lepiej niż iOS 11.4
U mnie działa płynnie