Výkon Xamarin.Mac
Přehled
Aplikace Xamarin.Mac se podobají Xamarin.iOS a mnoho stejných návrhů výkonu platí:
existuje ale řada konkrétních návrhů pro macOS, které můžou být užitečné.
Preferovat moderní cílovou architekturu
Pro aplikaci Xamarin.Mac je k dispozici několik cílových architektur s různými charakteristikami a funkcemi výkonu.
Pokud je to možné, preferujte moderní knihovny a pracujte se závislými knihovnami a přidejte podporu. Pouze moderní cílová architektura umožňuje propojení, které může výrazně snížit velikost sestavení. To se stává zvlášť důležité při povolování AOT, protože kompilace AOT úplných sestavení může vytvářet velké konečné sady.
Povolení linkeru
Čas spuštění, a to jak při načítání, tak i jit (Just In Time), se poněkud lineárně škáluje s velikostí konečných binárních souborů. Nejjednodušší způsob, jak to vylepšit, je odebráním mrtvého kódu pomocí linkeru.
I když se tento návrh týká především uživatelů moderního cílového rozhraní, může použití propojení platforem poskytnout také omezenou zvýšení výkonu.
Povolení AOT v případě potřeby
Další omezující vlastností výkonu při spuštění je kompilace sestavení JIT do strojového kódu. Kompilace před časem (AOT) může výrazně zkrátit dobu spuštění, ale obsahuje řadu kompromisů popsaných v dokumentaci AOT.
Zajištění výkonných delegátů
Mnoho aplikací Xamarin.Mac je zaměřeno na zobrazení Cocoa, jako NSCollectionView
je , NSOutlineView
nebo NSTableView
. Tato zobrazení jsou často založená Delegate
na DataSource
třídách, které poskytujete Cocoa, odpovídání na otázky ohledně toho, co se má zobrazit.
Mnoho z těchto vstupních bodů se často vyvolává, někdy několikrát za sekundu při posouvání.
Ujistěte se, že tyto funkce vrací hodnoty, které jsou snadno počítané nebo používají informace, které už jsou uložené v mezipaměti, aby se zabránilo blokování uživatelského rozhraní.
Použití rozhraní API poskytovaného Cocoa pro opakované použití zobrazení
Mnoho zobrazení Cocoa, která obsahují mnoho podřízených zobrazení nebo buněk (například NSCollectionView
NSOutlineView
, a NSTableView
) poskytuje rozhraní API pro vytváření a opakovaného vytváření zobrazení. Vytvářejí fondy sdílených položek a brání problémům s výkonem při rychlém procházení zobrazení.
Použití async a nezablokujte uživatelské rozhraní.
Desktopové aplikace často zpracovávají velké objemy dat a je velmi snadné blokovat vlákno uživatelského rozhraní čekající na synchronní operaci.
Kdykoli je to možné, použijte asynchronní a vlákna, abyste zabránili blokování uživatelského rozhraní.
U dlouhotrvajících operací zvažte možnosti uvedené v HIG společnosti Apple, které uživatele upozorní.