Xamarin Profiler

Tento průvodce zkoumá klíčové funkce Xamarin Profiler. Sleduje profilátory, profilaci a kdy se mají použít, a ve standardním pracovním postupu 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 – přidělení, cykly a časový profiler. Tato příručka zkoumá, co tyto nástroje měří, jak analyzují vaši aplikaci, a vysvětluje význam dat zobrazených na jednotlivých obrazovkách.

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 tuto funkci mohli odemknout v Visual Studio Enterprise ve Windows nebo Visual Studio pro Mac na Macu, musíte být předplatitelem Visual Studio Enterprise.

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

Stáhněte si 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, když je spuštěný a používán. Profiler je nástroj pro dolování dat, který shromažďuje informace o časové složitosti, využití konkrétních metod a přidělené paměti. Profiler umožňuje podrobnou analýzu těchto metrik a určit oblasti 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 dostanete 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 jak vaše aplikace využívá paměť.

Profilace je užitečná ve všech typech vývoje, ale je obzvláště zásadní pro vývoj mobilních zařízení. Neoptimalizovaný kód je mnohem patrně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 mnoho různých způsobů profilace aplikace 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ů alokací a časovače.

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 je možné ho použít jako samostatnou aplikaci k prozkoumání .exe a .mlpd souborů vytvořených z profileru mono protokolu.

Podpora profileru

Podpora pro Xamarin Profiler je k dispozici 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 se nepodporuje)
      • 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

Mějte na paměti, že můžete profilovat pouze konfigurace ladění .

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:

Vytvoření > ladění iOS – > Povolení profilace

Dialogové okno Možnosti pro iOS v Visual Studio pro Mac

  • Android:

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

Dialogové okno Možnosti androidu v Visual Studio pro Mac

Spuštění profileru

Xamarin Profiler můžete spustit z integrovaného vývojového prostředí při profilaci aplikace 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. Přejděte na Spustit > profilaciv Visual Studio pro Mac nebo Analyzovat > Xamarin Profiler v sadě Visual Studio a otevřete Profiler, jak je znázorněno na následujícím diagramu:

Spuštění profileru z Visual Studio pro Mac

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

Spustí se Profiler a automaticky se spustí profilace aplikace.

Profiler lze použít k měření paměti a výkonu. Toho dosáhneme prostřednictvím nástrojů alokací a profileru času, 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... Tím se soubor uloží ve formátu mlpd , speciálním, vysoce komprimovaném formátu pro profilaci dat.

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

Otevření samostatného profileru z Macu

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í běhu 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 vodorovně vztahují k příslušným nástrojům v seznamu instrumentů. Ke změně měřítka je možné 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 segmentovaným ovládacím prvku. Oddíly jsou závislé na vybraném instrumentu a zahrnují: Nastavení konfigurace, 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 nějakém smyslu to nikdy nepůjde, jen se zvýší. To zahrnuje objekty přidělené 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. 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 seskupení objektů, poskytuje statistiky o přidělených paměti a nejvyšší přidělení a také zobrazení pro trasování zásobníku a cestu k 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 lze zobrazení kontroly nastavení zobrazení použít ke změně způsobu, jakým se zobrazuje. Aktuálně existují dvě možnosti:
    1. Invertovaný strom volání – to považuje trasování zásobníku shora dolů. Jedná se o výhodnou možnost zobrazení, protože označuje nejsouhlší metody, ve kterých procesor tráví čas.
    2. Oddělené vláknem – Tato možnost uspořádá strom volání podle vlákna.
  • Snímky – Toto podokno zobrazuje informace o snímcích paměti. Pokud chcete tyto funkce 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ěť je zachována a uvolněna. Potom můžete kliknout na jednotlivé snímky a prozkoumat, co se děje pod kapotou. Mějte na paměti, že snímky se dají pořizovat jenom při živé profilaci aplikace.

Profiler času

Nástroj Time Profiler měří přesně, kolik času se v jednotlivých metodách aplikace stráví. Aplikace se pozastaví v pravidelných intervalech a trasování zásobníku se spustí na každém aktivním vlákně. Každý řádek v oblasti podrobností instrumentu zobrazuje cestu spuštění, která byla následovat.

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

  • Call Tree – 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é se nikdy nezlikvidují. Tento nástroj umožňuje tyto objekty určit a zobrazit cykly odkazované ve vaší aplikaci.

Aplikace pro profilaci

V současné době lze 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 .

SGen Garbage Collector a profiling

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ého prostoru objektů. To umožňuje rychlejší spouštění uvolňování paměti. SGen je momentálně výchozím GC pro Xamarin.Android a sjednocené aplikace Xamarin.iOS.

Aplikace Xamarin.iOS pomocí klasického rozhraní API používala uvolňování paměti Boehm – konzervativně negenerační uvolňování paměti. Vzhledem k tomu, že je konzervativnější, 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í výzva k zobrazení dialogového okna 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 .

Souhrn

V této příručce jsme se podívali na to, co je profilace a jak je výhodné pro vývojáře. Pak jsme představili Xamarin Profiler, který poskytuje určitou historii a informace o tom, jak funguje. Nakonec jsme si prohlédli funkce Xamarin Profileru a prozkoumali nástroje pro přidělování a časový profilátor.