Sela

.NET Performance

Description
This three-day instructor-led course provides students with the knowledge and skills to develop high-performance applications with the .NET Framework. Building high-performance applications with the .NET Framework requires deep understanding of .NET memory management (GC), type internals, collection implementation and most importantly - tools for measuring application performance. The course features numerous performance measurement scenarios, optimization tricks, deep focus on .NET internals and high-performance development guidelines.
Intended audience
This course is intended for C# developers with practical experience of at least a year with the .NET framework.

Topics

Performance measurement metrics - what can be measured?
Windows performance counters
CPU profilers - sampling and instrumentation
Memory allocation profiling
Memory leak profiling
Concurrency profiling
Event Tracing for Windows
Windows Performance Toolkit and PerfView
Micro-benchmarking
LAB: Measuring CPU time and wall-clock time
LAB: Profiling memory allocations
LAB: Diagnosing a memory leak
LAB: Profiling CPU cache misses
Differences between value types and reference types
Reference type memory layout - type object pointer, sync block index
Invoking virtual vs. non-virtual methods, the sealed modifier
Value type memory layout, boxing
Implementing value types correctly - Equals and GetHashCode
Reference counting vs. tracing GC
The managed heap and the next object pointer (NOP)
Mark and sweep GC model, GC roots
GC flavors - workstation GC, server GC
Thread suspension for GC
Pinning objects referenced by unmanaged code
Generations and inter-generation references
GC segments and virtual memory
Managed GC APIs
Finalization internals and deterministic finalization
Weak references
Best practices for interacting with the GC
Motivation and generic constraints
Implementation of generics at runtime
.NET generics compared to Java generics and C++ templates
The Marshal class, accessing unmanaged memory
Copying data from unmanaged structures
C# pointers, the unsafe keyword, pinned pointers
LAB: Implementing memory copy with unsafe code
LAB: Improving upon code-generation approaches
.NET Collections
Choosing a Collection
Cache Considerations
Custom Collections
Multi-Core Background JIT
NGen
MPGO
RyuJIT
ILMerge
.NET Native
Method Inlining
Range Check Elimination
Microsoft.Bcl.Simd

רוצה לדבר עם יועץ?

האם אתה בטוח שאתה רוצה לסגור את הטופס ולאבד את כל השינויים?