Xamarin.Mac 效能

概觀

Xamarin.Mac 應用程式和 Xamarin.iOS 類似,而且適用許多相同的效能建議:

但還有一些實用的 macOS 特有建議。

建議使用新式目標架構

Xamarin.Mac 應用程式可以使用數個效能特性與功能各異的目標 Framework

可能的話,建議使用「現代」並搭配使用相依程式庫以增加支援。 只有現代目標 Framework 允許可大幅減少組件大小的連結。 這在啟用 AOT 時特別重要,因為「完整」組件的 AOT 編譯會產生大型的最終套件組合。

啟用連結器

在負載與 Just In Time (JIT) 兩者的啟動時間稍微會隨著最終二進位檔的大小呈線性變化。 最簡單的改善方法是使用連結器來移除無作用程式碼。

雖然這項建議主要適用於現代目標 Framework 使用者,使用平台連結也可以提升一定限度的效能。

適時啟用 AOT

影響啟動效能的另一個層面是將組件以 JIT 方式編譯為機器碼。 預先編譯 (AOT) 可大幅縮減啟動時間,但有幾項缺點,請參閱 AOT 文件的說明。

確保委派效能

許多 Xamarin.Mac 應用程式都是以像是 NSCollectionViewNSOutlineViewNSTableView 的 Cocoa 檢視為主。 這些檢視經常是透過您提供給 Cocoa 的 DelegateDataSource 類別回答要顯示什麼內容的問題來提供。

其中許多進入點都會經常叫用,在捲動時有時候會每秒叫用多次。

請確定這些函式傳回的值都可以輕鬆計算或使用已經快取的資訊,以免阻礙使用者介面。

使用 Cocoa 提供的 API 以重複使用檢視

包含許多子檢視或子資料格 (例如 NSCollectionViewNSOutlineViewNSTableView) 的許多 Cocoa 檢視都提供可用來建立和重複使用檢視的 API。 這些都會建立共用項目集區,並防止在檢視間快速捲動時發生效能問題。

使用非同步而不阻斷 UI

傳統型應用程式經常會處理大量資料,而且非常容易阻礙正在等待同步作業的 UI 執行緒。

可能的話,請使用非同步和執行緒以免阻礙 UI。

對於長時間執行的作業,請考慮使用 NSProgressIndicator 或 Apple 的 HIG \(英文\) 中記載的其他選項來通知使用者。