Google przyznaje, że Android ma opóźnienia: kod kolejki aplikacji przepisany dla nadchodzącej wersji
Inżynierowie Google opublikowali szczegółową analizę jednego z kluczowych, ale subtelnych, zmian w nadchodzącym Androidzie 17. Wygląda na to, że firma postanowiła poważnie zająć się problemem, który frustruje nawet właścicieli flagowców—mikro-zacięcia interfejsu użytkownika, które występują podczas przewijania strumienia lub otwierania folderu, powodując, że obraz zatrzymuje się prawie niezauważalnie.
W nowej wersji systemu operacyjnego przepisano kluczowy komponent zwany MessageQueue. Mówiąc prosto, można to traktować jako dyspozytora, który zarządza tym, które procesy uzyskują dostęp do pamięci w celu renderowania wyświetlacza i kiedy. Wcześniej ten dyspozytor działał na zasadzie wyłącznego dostępu: jednolockowego zablokowania całego zbioru danych. Jeśli proces w tle (np. sprawdzanie użycia aplikacji) przejął ten blokadę, a następnie system operacyjny skupił się na innych zadaniach, wątek UI utknąłby w oczekiwaniu. Efekt? Utracone klatki i ogólne wrażenie, że system „waha się” lub działa wolno.
W Androidzie 17 porzucili to podejście i zastąpili pojedynczą blokadę mechanizmem zwanym DeliQueue. Nazwa jest zamierzona—inżynierowie porównują to do systemu biletowego w delikatesach. W klasycznej kolejce (jak wcześniej), następna osoba nie może przejść do przodu, dopóki osoba przy ladzie nie zakończy całej transakcji. W nowym schemacie każdy nowy proces otrzymuje „bilet” i może działać bez blokowania innych. Główny wątek (wątek UI) decyduje następnie o kolejności przetwarzania nadchodzących zadań, ale bez wchodzenia w stan oczekiwania.
Aby jeszcze bardziej przyspieszyć działanie, inżynierowie usunęli również warunkowe gałęzie w kodzie porównania wiadomości. W klasycznym kodzie CPU próbuje przewidzieć, czy wybrać gałąź „tak” czy „nie”; jeśli prognoza jest błędna, czas jest marnowany na oczyszczanie potoku. W nowej implementacji zastąpiono to „bezwarunkową” arytmetyką, która w testach syntetycznych wykazała wzrost wydajności o nawet 500% w scenariuszach o wysokiej konkurencji.
Zwykli użytkownicy nie muszą ręcznie aktywować DeliQueue. To optymalizacja na poziomie systemu, która jest domyślnie włączona dla wszystkich aplikacji skierowanych na Androida 17. Programiści mają już dostęp do narzędzi testowych, a ci niecierpliwi mogą zainstalować wczesne wersje systemu na kompatybilnych urządzeniach Pixel.
Co myślisz, czy to naprawdę rozwiąże problemy z fragmentacją i opóźnieniami na różnych urządzeniach, czy też, jak zwykle, to tylko „papierowe obietnice”, a w rzeczywistości producenci znów wszystko popsują swoimi niestandardowymi nakładkami?

