Xamarin Profiler

Tato příručka zkoumá klíčové funkce Xamarin Profiler. Podívá se na profilace, profilaci a to, kdy se mají použít, a na 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á do aplikace implementovali opravdu skvělé funkce, ale pokud je aplikace pomalá nebo plná selhání, uživatel se ji pravděpodobně zbaví.

Mono v minulosti vybíral výkonný profiler příkazového řádku pro shromažďování informací o programech spuštěných v Mono runtime, který se nazývá profiler protokolu Mono. Rozhraní Xamarin Profiler grafické rozhraní pro profiler protokolů Mono a podporuje profilaci aplikací pro Android, iOS, tvOS a Mac v počítačích Mac a Android, iOS a tvOS v Windows.

V Xamarin Profiler je k dispozici řada nástrojů pro profilaci – přidělování, cykly a časový profiler. Tato příručka zkoumá, co tyto nástroje měří a jak analyzují vaši aplikaci, a vysvětluje význam dat prezentovaných na jednotlivých obrazovkách.

Tato příručka se zabývá běžnými scénáři profilace a představuje profiler jako nástroj, který pomáhá analyzovat a optimalizovat aplikace pro iOS a Android.

Stažení a instalace

Poznámka

Abyste tuto funkci odemkli Visual Studio Enterprise, musíte být Visual Studio Enterprise na Windows nebo Visual Studio pro Mac počítači Mac.

Aplikace Xamarin Profiler samostatná aplikace, která je integrovaná s Visual Studio pro Mac a Visual Studio umožňující 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 Xamarin Profiler do systému.

Profilace a profilace

Profilace je důležitý a často přehlížený krok při vývoji aplikace. Profilace je forma dynamické analýzy programu – analyzuje program v době, kdy běží a používá se. 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 přejít k podrobnostem a analyzovat tyto metriky a určit problémové oblasti v kódu.

Při navrhování a vývoji aplikace je důležité, abyste ji předčasně ne optimalizovali. To znamená, že strávíte čas vývojem kódu v oblastech, ke kterým se bude přistupovat 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 věnovat čas vylepšování. Vývojáři by měli vědět, kde ve vaší aplikaci strávíte většinu času a jak vaše aplikace používá paměť.

Profilace je užitečná ve všech typech vývoje, ale je obzvlášť důležitá při vývoji mobilních aplikací. Neomalenější kód je na mobilních platformách mnohem patrnější než na stolních počítačích a úspěch vaší aplikace závisí na skvělém a optimalizovaném kódu, který běží efektivně.

Xamarin Profiler

Rozhraní Xamarin Profiler poskytuje vývojářům způsob, jak profilovat aplikace z Visual Studio pro Mac nebo Visual Studio. Profiler shromažďuje a zobrazuje informace o aplikaci, které 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 Profiler, konkrétně profilace paměti a statistické vzorkování. Provádějí se prostřednictvím nástrojů alokace a profileru času v uvedeném pořadí.

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

Podpora profileru

Podpora pro Xamarin Profiler je k dispozici na následujících platformách:

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

    • Android
      • Zařízení a Emulator
    • iOS
      • Zařízení a simulátor
    • tvOS (nástroj Time Instrument se nepodporuje)
      • Zařízení a simulátor
    • Mac
  • Visual Studio (pouze Enterprise verze)

    • Android
      • Zařízení a Emulator
    • iOS [experimentální]
      • Zařízení a simulátor
    • tvOS
      • Zařízení a simulátor

Mějte na vědomí, že můžete profilovatpouze konfigurace ladění.

Základy profileru

V této části se seznámíte s částmi Xamarin Profiler a seznámíte se s jeho funkcemi.

Povolení profilace v aplikaci

Než budete moci úspěšně profilovat aplikaci, budete muset povolit profilaci v okně Project aplikace.

  • iOS:

Vytvoření povolení profilace ladění pro iOS >

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

  • Android:

Sestavení nástroje Android Debug Enable Developer > Instrumentation

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

Spuštění profileru

Aplikaci Xamarin Profiler spustit z integrovaného vývojového prostředí (IDE) při profilaci aplikace pro iOS nebo Android nebo jako samostatnou aplikaci.

Spouš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 profilacispuštění v Visual Studio pro Mac nebo analyzovat Xamarin Profiler v Visual Studio a otevřete profiler, jak je znázorněno v následujícím diagramu:

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

Pokud se položky nabídky nezobrazí, přečtě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. Toho dosahuje prostřednictvím nástrojů alokace 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 Soubor Uložit jako. Soubor se uloží ve formátu mlpd, což je speciální, vysoce komprimovaný formát pro profilaci dat.

Po instalaci najdete soubor Xamarin Profiler 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, vyberete Zvolit cíl a načtete soubor.

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

Funkce profileru

Následující Xamarin Profiler se skládá z pěti oddílů, jak je znázorněno níže:

  • Panel nástrojů – v horní části profileru nabízí možnosti spuštění/zastavení profilace, výběr cílového procesu, zobrazení doby běhu aplikace a výběr rozdělených zobrazení, která tvoří aplikaci profileru.
  • Seznam instrumentací – zobrazí seznam všech nástrojů načtených pro relaci profilace.
  • Graf grafu – tyto grafy se vztahují vodorovně k relevantním nástrojům v seznamu nástrojů. Ke změně měřítka je možné použít posuvník (zobrazený pod Profilerem času).
  • Oblast Instrument Detail (Podrobnosti o nástroji) – obsahuje data zobrazená vybraným zobrazením aktuálního nástroje. Na tato zobrazení se podrobněji podíváme v následující části.
  • Zobrazení inspektoru – obsahuje oddíly, které může segmentovaný ovládací prvek vybrat. Oddíly jsou závislé na vybraném nástroji a zahrnují: konfigurační Nastavení, statistiky, informace trasování zásobníku a cestu ke kořenům.

Přidělení

Nástroj pro přidělování 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. V současné době je graf přidělení celkovým počtem přidělení a NIKOLI velikostí haldy v tomto okamžiku. V tom smyslu se nikdy nezvýší, jen se zvětšuje. To zahrnuje objekty přidělené v zásobníku. V závislosti na použité verzi modulu runtime může graf vypadat jinak – dokonce i pro stejnou aplikaci.

V nástroji Přidělování existují různá zobrazení dat, která vývojářům umožňují analyzovat, jak jejich aplikace využívá a uvolňují paměť. Tato zobrazení jsou popsána níže:

  • Přidělení – zobrazí 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 souhrnné 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ů, poskytuje statistiky o přidělené 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ž v seznamu vyberete prvek, všechny uzly na stejné úrovni se zobrazí šedě. Můžete rozbalit strom nebo poklikat na prvek a přejít k jeho podrobnostem. Při zobrazení tohoto zobrazení dat lze pomocí zobrazení inspektoru nastavení zobrazení změnit způsob zobrazení. V současné době existují dvě možnosti:
    1. Invertovaný strom volání – zohlední trasování zásobníku shora dolů. Jedná se o praktickou možnost zobrazení, protože indikuje nejhlubší 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 panelu nástrojů na tlačítko Fotoaparát v každém okamžiku, kdy chcete vidět, jaká paměť se uchovává a uvolňuje. Kliknutím na jednotlivé snímky pak můžete prozkoumat, co se děje pod pokličkou. Mějte na vědomí, že snímky je možné pořovat pouze při živé profilaci aplikace.

Time Profiler

Nástroj Time Profiler měří přesně to, kolik času se u každé metody aplikace stráví. Aplikace se v pravidelných intervalech pozastaví a trasování zásobníku se spustí v každém aktivním vlákně. Každý řádek v oblasti Instrument Detail (Podrobnosti o nástroji) zobrazuje cestu provádění, která byla provedena.

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

  • Strom volání – zobrazuje množství času stráveného v každé metodě:

Cykly

Díky použití spravovaného kódu C# a F# může být poměrně běžné a bohužel poměrně snadné vytvořit odkazy na objekty, které se nikdy neukončují. Tento nástroj umožňuje určit tyto objekty a zobrazit cykly, na které se odkazuje ve vaší aplikaci.

Profilace aplikací

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

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

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

Systém uvolňování paměti SGen a profilace

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

SGen je generativní uvolňování paměti, které přiděluje objekty aplikace do tří hald – selské, hlavní haldy a Large Object prostoru. To umožňuje urychlení uvolňování paměti. SGen je v současné době výchozím uvolňováním paměti pro aplikace Xamarin.Android a Xamarin.iOS Unified.

Aplikace Xamarin.iOS využívající Classic API používala katalog Boehm GC – ne generationální systém uvolňování paměti. Vzhledem k tomu, že je nespravovatelná, je méně pravděpodobné, že se dostupná paměť uchová, což může vést k nepřesných výsledkům při použití profileru. Z tohoto důvodu nelze nástroj Přidělení použít s systémem uvolňování paměti Boehm.

I když se vám zobrazí dialogové okno se zprávou, pokud vaše aplikace používá katalog Boehm GC, Xamarin nedoporučuje přepínat existující aplikaci pro iOS, která používá Boehm na SGen, bez pečlivého průzkumu a důkladného testování. Xamarin také nedoporučuje pro profilaci přepnout na SGen a pak ho přepnout zpět, protože tyto výsledky neposkytnou 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 pro vývojáře výhodné. Pak jsme představili Xamarin Profiler, kde najdete historii a informace o tom, jak funguje. Nakonec jsme si prozkoumli funkce Xamarin Profiler a prozkoumli jsme nástroje přidělování a časového profileru.