Wydajność platformy Xamarin.Mac

Omówienie

Aplikacje platformy Xamarin.Mac są podobne do platformy Xamarin.iOS, a wiele z tych samych sugestii dotyczących wydajności ma zastosowanie:

ale istnieje wiele sugestii specyficznych dla systemu macOS, które mogą być przydatne.

Preferuj nowoczesną platformę docelową

Istnieje wiele platform docelowych dostępnych dla aplikacji Xamarin.Mac o różnych cechach wydajności i funkcjach.

Jeśli to możliwe, preferuj nowoczesne biblioteki i pracuj z bibliotekami zależnymi, aby dodać obsługę. Tylko nowoczesna platforma docelowa umożliwia łączenie, które może znacząco zmniejszyć rozmiary zestawów. Staje się to szczególnie ważne podczas włączania funkcji AOT, ponieważ kompilacja pełnych zestawów AOT może generować duże końcowe pakiety.

Włączanie konsolidatora

Czas uruchamiania, zarówno w przypadku ładowania, jak i "Just In Time" (JIT), skaluje nieco liniowo z rozmiarem końcowych plików binarnych. Najprostszym sposobem na poprawienie tego problemu jest usunięcie martwego kodu za pomocą konsolidatora.

Chociaż ta sugestia dotyczy głównie użytkowników nowoczesnej platformy docelowej, użycie platformy Linking może również zapewnić ograniczony wzrost wydajności.

Włącz funkcję AOT, jeśli jest to konieczne

Innym aspektem wydajności uruchamiania jest kompilacja zestawów JIT w kodzie maszynowym. Kompilacja przed czasem (AOT) może znacznie skrócić czas uruchamiania, ale zawiera szereg kompromisów omówionych w dokumentacji AOT.

Zapewnianie wydajnych delegatów

Wiele aplikacji platformy Xamarin.Mac koncentruje się wokół widoków platformy Cocoa, takich jak NSCollectionView, NSOutlineViewlub NSTableView. Często te widoki są obsługiwane przez Delegate klasy, DataSource które udostępniasz cocoa, odpowiadając na pytania dotyczące wyświetlania.

Wiele z tych punktów wejścia jest wywoływanych często, czasami wiele razy na sekundę podczas przewijania.

Upewnij się, że te funkcje zwracają wartości, które są łatwo obliczane lub używają już buforowanych informacji, aby zapobiec blokowaniu interfejsu użytkownika.

Używanie interfejsów API udostępnianych przez platformę Cocoa do ponownego używania widoków

Wiele widoków kakao zawierających wiele widoków podrzędnych lub komórek (takich jak NSCollectionView, NSOutlineViewi NSTableView) udostępnia interfejsy API do tworzenia i ponownego użycia widoków. Umożliwiają one tworzenie pul elementów udostępnionych i zapobieganie problemom z wydajnością podczas szybkiego przewijania widoków.

Używanie asynchronicznego interfejsu użytkownika i nie blokuj go

Aplikacje klasyczne często przetwarzają duże ilości danych i bardzo łatwo jest zablokować wątek interfejsu użytkownika oczekujących na operację synchroniczną.

Jeśli to możliwe, użyj async i wątków, aby zapobiec blokowaniu interfejsu użytkownika.

W przypadku długotrwałych operacji rozważ użycie narzędzia NSProgressIndicator lub innych opcji zanotowany w hig firmy Apple w celu powiadamiania użytkowników.