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
, NSOutlineView
lub 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
, NSOutlineView
i 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 należy rozważyć opcje zanotowany w HIG firmy Apple, aby powiadomić użytkowników.