Xamarin Profiler

Tato příručka prozkoumá klíčové funkce Xamarin Profileru. Sleduje profilátory, profilaci a čas jejich použití a standardní pracovní postup pro profilaci aplikací Xamarin.

Úspěch aplikace závisí na prostředí koncového uživatele. Jako vývojář jste možná implementovali některé opravdu úžasné funkce ve vaší aplikaci, ale pokud je aplikace pomalá nebo plná chybových ukončení, uživatel se toho pravděpodobně zbaví.

Mono v minulosti obsahoval výkonný profiler příkazového řádku pro shromažďování informací o programech spuštěných v modulu runtime Mono, který se nazývá Profiler protokolu Mono. Xamarin Profiler je grafické rozhraní pro profiler mono protokolů a podporuje profilaci aplikací pro Android, iOS, tvOS a Mac v systémech Mac a Android, iOS a tvOS ve Windows.

Xamarin Profiler má k dispozici řadu nástrojů pro profilaci – alokace, cykly a profiler času. Tato příručka zkoumá, co tyto nástroje měří, jak analyzují vaši aplikaci, a vysvětluje význam dat zobrazených na každé obrazovce.

Tato příručka zkoumá běžné scénáře profilace a zavádí profiler jako nástroj, který pomáhá analyzovat a optimalizovat aplikace pro iOS a Android.

Stažení a instalace

Poznámka:

Abyste mohli tuto funkci odemknout v sadě Visual Studio Enterprise ve Windows nebo Visual Studio pro Mac na Macu, budete muset být předplatitelem sady Visual Studio Enterprise.

Xamarin Profiler je samostatná aplikace a je integrovaná s Visual Studio pro Mac a sadou Visual Studio, která umožňuje profilaci v integrovaném vývojovém prostředí (IDE).

Stáhněte instalační balíček pro vaši platformu:

Po stažení spusťte instalační program a přidejte do systému Xamarin Profiler.

Profilátory a profilace

Profilace je důležitý a často přehlédnutelný krok při vývoji aplikací. Profilace je forma dynamické analýzy programu – analyzuje program během běhu a použití. Profiler je nástroj pro dolování dat, který shromažďuje informace o složitosti času, využití konkrétních metod a přidělené paměti. Profiler umožňuje podrobné procházení podrobností a analýzu těchto metrik za účelem určení oblastí problémů v kódu.

Při navrhování a vývoji aplikace je důležité předčasně neoptimalizovat; to znamená, že trávit čas vývojem kódu v oblastech, ke kterým se bude přistupovat jen zřídka. To je síla profilace. Profiler poskytuje přehled o nejčastěji používaných částech základu kódu a pomáhá najít oblasti, kde byste měli strávit čas vylepšováním. Vývojáři by se měli postarat o to, kde se ve vaší aplikaci tráví většina času, a zjistit, jak vaše aplikace využívá paměť.

Profilace je užitečná ve všech typech vývoje, ale je zvlášť důležitá pro vývoj mobilních zařízení. Neoptimalizovaný kód je mnohem zřetelnější na mobilních platformách než na stolních počítačích a úspěch vaší aplikace závisí na krásném a optimalizovaném kódu, který funguje efektivně.

Xamarin Profiler

Xamarin Profiler poskytuje vývojářům způsob, jak profilovat aplikace z Visual Studio pro Mac nebo sady Visual Studio. Profiler shromažďuje a zobrazuje informace o aplikaci, kterou pak může vývojář použít k analýze chování aplikace. Existuje několik různých způsobů, jak profilovat aplikaci pomocí Xamarin Profileru, konkrétně profilace paměti a statistického vzorkování. Tyto nástroje se provádějí prostřednictvím nástrojů přidělování a profileru času.

V současné době lze Xamarin Profiler použít k testování aplikací Xamarin.iOS, Xamarin.Android a Xamarin.Mac na Macu (prostřednictvím Visual Studio pro Mac). Profiler je samostatný proces od integrovaného vývojového prostředí (IDE), takže kromě spuštění z Visual Studio pro Mac se dá použít jako samostatná aplikace k prozkoumání .exe a .mlpd souborů vytvořených z profileru mono protokolu.

Podpora profileru

Podpora Xamarin Profileru je dostupná na následujících platformách:

  • Visual Studio pro Mac (macOS, s licencí Enterprise)

    • Android
      • Zařízení a emulátor
    • Ios
      • Zařízení a simulátor
    • tvOS (nástroj Time Instrument není podporovaný)
      • Zařízení a simulátor
    • Mac
  • Visual Studio (pouze verze Enterprise )

    • Android
      • Zařízení a emulátor
    • iOS [Experimentální]
      • Zařízení a simulátor
    • tvOS
      • Zařízení a simulátor

Všimněte si, že konfigurace ladění můžete profilovat pouze.

Základy profileru

Tato část představuje části Xamarin Profiler a prohlídky jeho funkcí.

Povolit profilaci v aplikaci

Než budete moct aplikaci úspěšně profilovat, budete muset povolit profilaci v možnostech projektu aplikace.

  • Ios:

Sestavení > ladění pro iOS – > Povolení profilace

iOS Options Dialog in Visual Studio for Mac

  • Android:

Sestavení > ladění Androidu > – Povolení instrumentace pro vývojáře

Android Options Dialog in Visual Studio for Mac

Spuštění profileru

Xamarin Profiler můžete spustit z integrovaného vývojového prostředí (IDE), když profilujete aplikaci pro iOS nebo Android nebo jako samostatnou aplikaci.

Spuštění z Visual Studio pro Mac

  1. Nejprve se ujistěte, že máte aplikaci načtenou v Visual Studio pro Mac, a vyberte (výchozí) konfiguraci ladění.
  2. V sadě Visual Studio přejděte ke spuštění profilacespuštění v Visual Studio pro Mac nebo k analýze > profileru Xamarin v sadě Visual Studio, jak je znázorněno v > následujícím diagramu:

Launching the Profiler from Visual Studio for Mac

Pokud se položky nabídky nezobrazí, projděte si průvodce odstraňováním potíží.

Tím se spustí Profiler a automaticky se spustí profilace aplikace.

Profiler lze použít k měření paměti a výkonu. Dosahuje toho prostřednictvím nástrojů Přidělení a časovače, které podrobně prozkoumáme v další části.

Ukládání a načítání relací profileru

Pokud chcete relaci profilace kdykoli uložit, zvolte v řádku nabídek Profileru možnost Uložit > jako... soubor. Tím se soubor uloží ve formátu mlpd , speciálním, vysoce komprimovaném formátu pro profilaci dat.

Po instalaci Xamarin Profiler najdete ve složce Aplikace, jak je znázorněno na následujícím snímku obrazovky:

Open standalone Profiler from Mac

Soubory .mlpd můžete do Profileru načíst tak, že otevřete samostatnou aplikaci a vyberete Zvolit cíl a načtete soubor.

Další informace naleznete v tématu Generování souborů .mlpd.

Funkce profileru

Xamarin Profiler se skládá z pěti částí, jak je znázorněno níže:

  • Panel nástrojů – Nachází se v horní části profileru, nabízí možnosti pro spuštění nebo zastavení profilace, výběr cílového procesu, zobrazení doby spuštění aplikace a výběr rozdělených zobrazení, která tvoří aplikaci profileru.
  • Seznam nástrojů – seznam všech nástrojů načtených pro relaci profilace.
  • Graf – tyto grafy se vztahují vodorovně k příslušným nástrojům v seznamu nástrojů. Ke změně měřítka se dá použít posuvník (zobrazený pod profilerem času).
  • Oblast podrobností instrumentu – obsahuje data zobrazená vybraným zobrazením aktuálního nástroje. Tato zobrazení si podrobněji prohlédneme v následující části.
  • Zobrazení inspektoru – Obsahuje oddíly, které lze vybrat pomocí segmentovaného ovládacího prvku. Oddíly jsou závislé na vybraném instrumentu a zahrnují: konfigurační Nastavení, statistiky, informace o trasování zásobníku a cestu ke kořenům.

Přidělení

Nástroj přidělení poskytuje podrobné informace o objektech v aplikaci při jejich vytváření a uvolňování paměti.

V horní části profileru je graf přidělení, který zobrazuje množství paměti přidělené v pravidelných intervalech během profilace. Graf přidělení je v současné době celkový počet přidělení a NE velikost haldy v daném okamžiku. V smyslech to nikdy nepůjde, to se jen zvýší. To zahrnuje objekty přidělené v zásobníku. V závislosti na použité verzi modulu runtime může graf vypadat jinak – i pro stejnou aplikaci.

V nástroji Přidělení existují různá zobrazení dat, která vývojářům umožňují analyzovat, jak aplikace používá a uvolní paměť. Tato zobrazení jsou popsaná níže:

  • Přidělení – Zobrazí se seznam všech přidělení a seskupí je podle názvu třídy. To poskytuje skvělý přehled o používaných třídách a metodách, o tom, jak často se používají, a o kolektivní velikosti použitých tříd. Poklikáním na třídu se zobrazí přidělená paměť:

Zobrazení inspektoru pro přidělení poskytuje možnosti pro filtrování a seskupování objektů, poskytování statistik o přidělené paměti a nejvyšší přidělení a také zobrazení pro trasování zásobníku a cestu ke kořenovému adresáři.

  • Strom volání – Zobrazí celý strom volání všech vláken v aplikaci a obsahuje informace o paměti přidělené na jednotlivých uzlech. Když je v seznamu vybraný prvek, zobrazí se všechny uzly na stejné úrovni šedě. Strom můžete rozbalit nebo poklikáním na prvek přejít k podrobnostem. Při zobrazení tohoto zobrazení dat se dá zobrazení inspektoru nastavení zobrazení použít ke změně způsobu jeho zobrazení. V současné době existují dvě možnosti:
    1. Invertovaný strom volání – to považuje trasování zásobníku shora dolů. Jedná se o pohodlnou možnost zobrazení, protože označuje nejsouhlší metody, ve kterých procesor tráví svůj čas.
    2. Oddělit podle vlákna – Tato možnost uspořádá strom volání podle vlákna.
  • Snímky – v tomto podokně se zobrazují informace o snímcích paměti. Pokud je chcete vygenerovat při profilaci živé aplikace, klikněte na tlačítko Kamera na panelu nástrojů v každém okamžiku, kdy chcete zjistit, jaká paměť se uchovává a vydává. Potom můžete kliknout na jednotlivé snímky a prozkoumat, co se děje pod kapotou. Mějte na paměti, že snímky je možné pořizovat pouze při živé profilaci aplikace.

Time Profiler

Nástroj Time Profiler měří přesně dobu strávenou v každé metodě aplikace. Aplikace je pozastavena v pravidelných intervalech a trasování zásobníku se spouští na každém aktivním vlákně. Každý řádek v oblasti podrobností nástroje zobrazuje cestu spuštění, která byla dodržena.

Graf grafu, jak je znázorněno na následujícím snímku obrazovky, zobrazuje počet ukázek přijatých aplikací při spuštění:

  • Strom volání – zobrazuje množství času stráveného v jednotlivých metodách:

Cykly

Díky použití spravovaného kódu jazyka C# a F# může být poměrně běžné a bohužel poměrně snadné vytvářet odkazy na objekty, které nikdy nebudou uvolněny. Tento nástroj umožňuje tyto objekty určit a zobrazit cykly, na které odkazuje vaše aplikace.

Profilace aplikací

V současné době je možné profilovat pouze výchozí konfigurace ladění.

Pokud profilujete aplikaci s jakoukoli jinou konfigurací, zobrazí se následující dialogové okno se zprávou:

Pokračujte výběrem možnosti Aktualizovat .

Uvolňování paměti a profilace SGen

Systém uvolňování paměti SGen se používá pro všechny platformy Xamarin.

SGen je generační GC, která přiděluje objekty aplikace do tří hald – dětské, hlavní haldy a velký objektový prostor. To umožňuje rychlejší spuštění uvolňování paměti. SGen je v současné době výchozím GC pro Xamarin.Android a sjednocené aplikace Xamarin.iOS.

Aplikace Xamarin.iOS využívající klasické rozhraní API používala GC Boehm – konzervativní negenerační systém uvolňování paměti. Vzhledem k tomu, že je konzervativní, je méně pravděpodobné uvolnit dostupnou paměť, což může vést k nepřesným výsledkům při použití profileru. Z tohoto důvodu nelze nástroj Přidělení použít s uvolňováním paměti Boehm.

I když se zobrazí dialogové okno se zprávou, pokud vaše aplikace používá Boehm GC, Xamarin nedoporučuje přepnout existující aplikaci pro iOS, která používá Boehm na SGen bez pečlivého výzkumu a důkladného testování. Xamarin také nedoporučuje přepnout na SGen pro profilaci a pak přepnout zpět, protože tyto výsledky nebudou poskytovat přesné srovnávací testy využití paměti.

Další informace o správě paměti najdete v průvodci osvědčenými postupy pro paměť a výkon.

Shrnutí

V této příručce jsme se podívali, co je profilace a jak je výhodné pro vývojáře. Pak jsme představili Xamarin Profiler a poskytli jsme historii a informace o tom, jak to funguje. Nakonec jsme se seznámili s funkcemi Xamarin Profileru a prozkoumali jsme nástroje alokace a nástroje časovače.