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 NSCollectionViewje , NSOutlineViewnebo 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 NSCollectionViewNSOutlineView, 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 použití NSProgressIndicator nebo jiných možností, které jsou uvedené ve společnosti Apple HIG , aby uživatele informovaly.