Používateľská náročnosť
Pre koho je kurz určený
Kurz je určený pre skúsených vývojárov, ktorí sa chcú posunúť opäť o niečo
ďalej a lepšie porozumieť tomu ako sa v .NET pracuje s pamäťou, aké sú skutočné
možnosti Debugging, ako sa robí kód, meria výkon alebo používa reflexia, ale aj
ďalšie pokročilé témy. Kurz je vhodný pre vývojárov nad klasickým frameworkom
rovnako ako na .Net Core alebo Mono for Xamarin
Požadované vstupné znalosti
Znalosť jazyka C # a platformy .Net na úrovni kurzu GOC2125.
Metódy výučby
Odborný výklad s praktickými ukážkami, cvičeniami na počítačoch.
Študijné materiály
Tlačená prezentácia preberanej látky.
Osnova
Práca s pamäťou v .NET
- Hodnotové vs. referenčné typy
- Alokácia a uvoľňovanie pamäte Garbage Collector
- Skryté alokácie
- Stackalloc
- Span, Memory
- Unsafe a marshalling
- In, ref structs, readonly
- Meranie spotreby pamäte, memory leaks
- Profiler
- Finalizácia
- Stringy
- WeakReference
Debuggovanie
- Debuggovania vo Visual Studiu a všetky možnosti debuggeru Visual
Studia
- Práca so symbolmi
- WinDBG debugging
- Post mortem debugging
- Tvorba a analýza dumpu aplikácie
Zložitosť algoritmu
Vytváranie kódu v prostredí .NET
- JIT kompilácie, Profile Optimizations, ngen, ready to run
- Optimalizácia v JIT, multicore JIT
- Tiered JIT
- Intrinsics, vektorizácia, SIMD
- Fungovanie CPU a vplyv inštrukcií na výkon
- Profiler
Meranie výkonu kódu
- Benchmarking a jeho limitácia
- Korektné vs. chybné meranie
- BenchmarkDotNet
- ETW
- PerfView
Asynchrónne spracovanie a škálovanie
- Asynchrónne vykonávanie a dopad na škálovanie
- Zamykanie a vzťah k výkonu
- Meranie zamykania, Concurrence Visualizer
- Scalable TCP server
Reflexia a jej efektívne použitie
- Lazy Initialization
- Caching
Messaging ako základný nástroj pre škálovanie