Zamknij reklame

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.

.