Xamarin.Mac-Leistung

Übersicht

Xamarin.Mac-Anwendung ähneln Xamarin.iOS-Anwendungen. Daher gelten ähnliche Leistungsempfehlungen für beide Anwendungsarten:

Es gibt allerdings auch einige nützliche Empfehlungen, die nur für macOS gelten.

Bevorzugen des Zielframeworks „Modern“

Es stehen mehrere Zielframeworks für Xamarin.Mac-Anwendungen mit unterschiedlichen Merkmalen und Features zur Verfügung.

Ziehen Sie wenn möglich immer das Framework „Modern“ vor, und arbeiten Sie mit abhängigen Bibliotheken, um die Unterstützung zu erhöhen. Nur das Zielframework „Modern“ lässt Verknüpfungen zu, wodurch Ihre Assemblygrößen drastisch reduziert werden können. Dies wird bei der Aktivierung von AOT besonders wichtig, das die AOT-Kompilierung (Ahead-of-time-Kompilierung) vollständiger Assemblys zu großen endgültigen Bündeln führen kann.

Aktivieren des Linkers

Die Startzeit wird sowohl beim Laden als auch bei der JIT-Kompilierung (Just-In-Time) ein Stück weit linear mit der Größe Ihrer endgültigen Binärdateien skaliert. Dies können Sie am einfachsten optimieren, indem Sie toten Code mit dem Linker entfernen.

Während diese Empfehlung hauptsächlich für Benutzer des Zielframeworks „Modern“ gilt, kann die Plattformverknüpfung die Leistung ebenfalls geringfügig erhöhen.

Aktivieren der AOT-Kompilierung (falls angemessen)

Ein weiterer Faktor der Startleistung ist die JIT-Kompilierung von Assemblys in Computercode. Die Ahead-of-time-Kompilierung (AOT) kann die Startzeit deutlich senken, führt aber auch zu Einbußen. Informationen dazu finden Sie in der AOT-Dokumentation.

Bereitstellen leistungsfähiger Delegaten

Viele Xamarin.Mac-Anwendungen bauen auf Cocoa-Ansichten wie etwa NSCollectionView, NSOutlineView oder NSTableView auf. Diese Ansichten werden häufig durch die Klassen Delegate und DataSource unterstützt, die Sie für Cocoa bereitstellen. Dadurch wird die Anzeige bestimmt.

Viele dieser Einstiegspunkte werden häufig aufgerufen, beim Scrollen manchmal mehrmals in der Sekunde.

Achten Sie darauf, dass diese Funktionen Werte zurückgeben, die leicht zu berechnen sind oder die zwischengespeicherte Informationen verwenden, um ein Blockieren der Benutzeroberfläche zu verhindern.

Verwenden von Cocoa-APIs für das Wiederverwenden von Ansichten

Viele Cocoa-Ansichten, die viele untergeordnete Ansichten oder Zellen beinhalten (wie z.B. NSCollectionView, NSOutlineView und NSTableView) bieten APIs zum Erstellen und Wiederverwenden von Ansichten. Diese erstellen Pools aus gemeinsam verwendeten Elementen und verhindern Leistungsprobleme beim schnellen Scrollen durch Ansichten.

Verwenden von „Async“ und Vermeiden der Blockierung der Benutzeroberfläche

Desktopanwendungen verarbeiten häufig große Datenmengen. Daher ist es sehr leicht, den UI-Thread durch das Warten auf einen synchronen Vorgang zu blockieren.

Verwenden Sie deshalb wenn möglich async und Threads, um das Blockieren der UI zu verhindern.

Ziehen Sie für lange Vorgänge NSProgressIndicator oder andere in den Benutzeroberflächen-Richtlinien von Apple erklärte Optionen in Betracht, um Benutzer zu benachrichtigen.