Verständnis und Verbesserung d... Notiz

Verständnis und Verbesserung der SwiftUI-Leistung

Airbnb nahm SwiftUI 2022 an, was die Produktivität der Ingenieure verbesserte, aber neue Leistungsprobleme mit sich brachte. Um diese Probleme anzugehen, erstellte Airbnb neue Werkzeuge, um leistungskritische Code-Muster zu identifizieren und zu validieren. Die Feature-Architektur des Unternehmens verwendet deklarative UI-Muster und einrichtungsorientierte Datenflusssysteme, was die Adoption von SwiftUI vereinfachte. Allerdings funktionierten die SwiftUI-Funktionen, die diese Architektur verwendeten, nicht so gut wie erwartet, und das Verständnis der Leistungsmerkmale von SwiftUI ist entscheidend für die Erstellung leistungsfähiger Funktionen. Der Ansichtsdifferenzierungsalgorithmus von SwiftUI, der bestimmt, wann der Körper einer Ansicht neu ausgewertet werden muss, wird oft übersehen und ist nicht offiziell dokumentiert. Der Algorithmus vergleicht jede der gespeicherten Eigenschaften der Ansicht, aber gemeinsame Code-Muster können ihn verwirren, was zu unnötigen Auswertungen des Ansichtskörpers führt. Um dies anzugehen, erstellte Airbnb ein neues @Equatable-Makro, das Equatable-Konformitäten für Ansichten generiert, damit Ingenieure selektiv entscheiden können, welche Eigenschaften bei der Differenzierung verglichen werden sollten. Dieser Ansatz stellt sicher, dass Ansichten differenzierbar sind und verhindert, dass Regressionsfehler später auftreten. Darüber hinaus implementierte Airbnb eine benutzerdefinierte SwiftLint-Regel, um Ingenieuren zu helfen, zu erkennen, wenn ein Ansichtskörper zu komplex ist und in kleinere, differenzierbare Teile aufgeteilt werden muss. Durch die Aufteilung von Ansichten in kleinere Teile kann SwiftUI effizient nur die Teile der Ansicht aktualisieren, die tatsächlich geändert wurden, und die Leistung bei wachsender Komplexität der Funktionen aufrechterhalten.
CdXz5zHNQW_IYTQREK32w.jpeg