Bachelor's Thesis

Performance Analysis of C# Programs

Final Thesis 2.41 MB

Author of thesis: Bc. Vojtěch Hájek

Acad. year: 2022/2023

Supervisor: Ing. Jiří Pavela

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

Abstract:

The goal of this thesis is to extend the Performance Version System – Perun by implementing a module for profiling programs written in C# language. This extension implements a tracing profiler with the use of .NET runtime profiling aplication interface. Profiler can collect metrics about trace functions and memory consumption. Measured profiles can then be interpreted into graphs like a scatter plot or a treemap.

Keywords:

C#, .NET, profiling, performance testing, Perun, dynamic analysis

Date of defence

15.06.2023

Result of the defence

Defended (thesis was successfully defended)

znamkaBznamka

Grading

B

Process of defence

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.

Topics for thesis defence

  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?

Language of thesis

Czech

Faculty

Department

Study programme

Information Technology (BIT)

Composition of Committee

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)

Supervisor’s report
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.

Evaluation criteria Verbal classification
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í.

Points proposed by supervisor: 90

Grade proposed by supervisor: 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í.

Evaluation criteria Verbal classification Points
Náročnost zadání

Evaluation level: průměrně obtížné zadání

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

Evaluation level: 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

Evaluation level: 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ů.

Points proposed by reviewer: 75

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová