bakalářská práce

Analýza výkonu programů v jazyce C#

Text práce 2.41 MB

Autor práce: Bc. Vojtěch Hájek

Ak. rok: 2022/2023

Vedoucí: Ing. Jiří Pavela

Oponent: doc. Mgr. Adam Rogalewicz, Ph.D.

Abstrakt:

Cílem této práce je rozšířit výkonnostní verzovací systém – Perun implementací modulu pro profilování programů napsaných v jazyce C#. Toto rozšíření implementuje profiler s technikou sledování událostí, které jsou získávány pomocí .NET runtime profilovacího aplikačního rozhraní. Profiler dokáže sbírat metriky o sledování funkcí a spotřebě paměti. Naměřené profily potom dokáže dále interpretovat do grafů jako je korelační diagram nebo mapa stromu volání.

Klíčová slova:

C#, .NET, profilování, výkonnostní testování, Perun, dynamická analýza

Termín obhajoby

15.06.2023

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znamkaBznamka

Klasifikace

B

Průběh obhajoby

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm B.

Otázky k obhajobě

  1. Můžete se trochu více vyjádřit k výsledkům experimentů?
  2. Jaký je rozdíl režije komerčních nástrojů ve srovnání s Vaším nástrojem?

Jazyk práce

čeština

Fakulta

Ústav

Studijní program

Informační technologie (BIT)

Složení komise

prof. Ing. Tomáš Vojnar, Ph.D. (předseda)
doc. Ing. Petr Matoušek, Ph.D., M.A. (člen)
Ing. František Grézl, Ph.D. (člen)
doc. Ing. Tomáš Martínek, Ph.D. (člen)
Ing. Matěj Grégr, Ph.D. (člen)

Posudek vedoucího
Ing. Jiří Pavela

Student v rámci řešení zadání prokázal schopnost samostatné práce, ať už z hlediska studia relevantních materiálů, tak z hlediska výsledné realizace. Student svůj pokrok při řešení práce a psaní technické zprávy pravidelně konzultoval. Výsledné řešení obsahuje práci nad rámec celkem tří bodů zadání, konkrétně:



  1. Nástroj umožňuje sledovat spotřebu dvou zdrojů (čas a paměť) namísto jednoho požadovaného.

  2. Byly implementovány celkem dvě různé vizualizace výsledků namísto jedné požadované.

  3. Experimentální vyhodnocení výsledků proběhlo celkem na třech netriviálních a reálně používaných projektech namísto jednoho požadovaného.


Jedinou nedotaženou stránkou práce je odložená integrace do nástroje Perun z důvodu nízké priority. Toto však proběhlo po domluvě s konzultanty projektu. Architektura nástroje jako takového byla ale navržena a implementována studentem takovým způsobem, aby byla integrace nástroje v budoucnu snadná. Jedná se pouze o drobný nedostatek v porovnání s kvalitou výsledné realizace a prací nad rámec požadavků zadání. Z těchto důvodů proto navrhuji hodnocení stupněm A.

Kritérium hodnocení Slovní hodnocení
Informace k zadání

Náročnost zadání bakalářské práce hodnotím jako průměrné. Jedná se o téma, které vyžaduje nastudování principů profilování spotřeby zdrojů a důkladné pochopení instrumentace programů ve zvoleném programovacím jazyce. Vypracované řešení je kvalitní a několik bodů zadání bylo studentem vyřešeno nad rámec požadavků zadání. Jedinou nedotaženou stránkou práce je chybějící integrace profilovacího nástroje do nástroje Perun, která byla po domluvě s vývojáři nástroje odložena z důvodu nízké priority. Architektura nástroje jako takového však byla navržena a implementována studentem takovým způsobem, aby byla integrace nástroje triviální.

Práce s literaturou

Student zvládal samostatně hledat a studovat literaturu relevantní k tématu.

Aktivita během řešení, konzultace, komunikace

Student byl v průběhu řešení práce velmi aktivní a pravidelně se účastnil domluvených schůzek. Stejně tak průběžně konzultoval stav technické zprávy, kterou začal vypracovávat už v průběhu zimního semestru.

Aktivita při dokončování

Práce byla dokončena s mírným předstihem.

Publikační činnost, ocenění

Výsledný nástroj je zveřejněn jako open-source a bude součástí open-source nástroje Perun. Navržené řešení navíc umožňuje rozšířit nástroj Perun o multiplatformní profilování.

Výsledný počet bodů navržený vedoucím: 90

Známka navržená vedoucím: A

Jedná se o pěknou práci, kterou ale trochu kazí formální nedostatky v kapitole 2 a výtky ke splnění bodu 3 zadání.

Kritérium hodnocení Slovní hodnocení Body
Náročnost zadání

Stupeň hodnocení: průměrně obtížné zadání

Rozsah splnění požadavků zadání

Stupeň hodnocení: zadání splněno pouze částečně s drobnými výhradami

Mám připomínku ke splnění bodu 3 zadání, který čistě formalisticky není splněn. Nástroj je implementován jako samostatně stojící modul, který není aktuálně do Peruna integrován. Důvodem jsou drobné technické rozdíly mezi implementací DotNet pro Windows a Linux, které zdržely plné rozchození nástroje po Linuxem. Perun na druhou stranu může teoreticky běžet i na Windows, ale tato verze není aktuálně podporována/udržována. Student nicméně udělal dostatečně velký kus práce a vlastní ne-integraci do Peruna lze považovat pouze za drobnou chybu. Při formulaci bodu 3 jako "Navrhněte a implementujte nástroj integrovatelný do Peruna" by zadání bylo splněno v plném rozsahu.

Rozsah technické zprávy

Stupeň hodnocení: je v obvyklém rozmezí

Prezentační úroveň technické zprávy

Práce je logicky členěna do kapitol, které na sebe navazují. Všechny důležité aspekty návrhu a implementace jsou popsány.

85
Formální úprava technické zprávy

V práci se vyskytují překlepy a typografické chyby. Narazil jsem na ně hned v kapitole 2, která trochu působí dojmem dodělávání na poslední chvíli. (i) překlepy:  "Eexecution", "stupňích", (ii) odkazy na další sekce nejsou jednotné: viz poslední řádek sekce 2.2.1 a 2.2.2. 

Od kapitoly 3 dále je formální stránka práce v pořádku.

69
Práce s literaturou

Bez připomínek.

90
Realizační výstup

Realizačním výstupem je nástroj umožňující profilování vybraných metrik C# programů, konkrétně sledování volání funkcí a času jejich běhu, sledování alokace objektů a sledování garbage collectingu. Nástroj je použitelný i samostatně mimo Perun framework. Jeho integrace do Peruna bude pomyslnou třešničkou.

89
Využitelnost výsledků

Vytvořený profiler může být přímo použit vývojáři C#. Vlastní práce pak jako dokumentace pro vytváření profilerů.

Výsledný počet bodů navržený oponentem: 75

Známka navržená oponentem: C

Odpovědnost: Mgr. et Mgr. Hana Odstrčilová