
Explore core .NET concepts and definitions, including .NET Standard 2.0, deployment options (self contained vs shared framework), and .NET Core 2.0 application types to boost cross-platform code sharing and performance.
Explore how the .NET garbage collector manages the managed heap, identify memory allocations and GC roots, and profile memory to prevent leaks in .NET Core.
Learn to diagnose .NET Core performance with ETW and PerfView, collect ETW events, view CPU stacks, and analyze GC behavior, memory allocations, and heap snapshots.
Learn how to monitor .NET Core performance using manual instrumentation with Mini Profiler across platforms, including configuring startup, measuring incoming requests, database calls, and http calls.
Compare value types and reference types via a demo, showing how proper equals and the equatable interface reduce boxing and gc pressure, with benchmarks and guidance for structs in collections.
Explore built-in dotnet core collections, compare array, list, linked list, dictionaries, hash sets, and sorted variants, and evaluate their data structures, performance, and ordering characteristics.
Learn to reuse arrays with the array pool in .NET Core and .NET Standard, reducing garbage collection and large object heap pressure.
Enable precompiled views in ASP.NET Core to avoid runtime view compilation, speeding startup and reducing deployment size; learn how to publish, check for precompiled DLLs, and consider version-specific limitations.
A few years ago, Microsoft decided to radically redefine the .NET platform. An open-source, cross-platform, high performance flavor of the .NET framework was created: this is .NET Core. Additionally, C#, the most widely used .NET programming language also evolved over the years. These new developments include many performance improvements.
The goal of the course is to give you deep understanding about these performance improvements. By applying the knowledge from this course, you will be able to measure and optimize the performance of .NET Core (including ASP.NET Core), C# applications.
After a short wrap-up on .NET Core the course introduces you to the first pillar of the performance topic: measuring performance. You will learn to use tools that you can apply to measure the performance of your code running on .NET Core. Then we will focus on some important performance tricks like reducing the pressure on the GC by using value types or choosing the right collection for the given problem. After that we will see what the compiler does behind the scenes when it compiles your C# 7 code and what performance implications this has. We will talk about some new performance related APIs like ArrayPool and Span and we will also look into the performance aspects of Entity Framework Core. We will talk about the ahead of time compilation story for .NET with CrossGen and IL trimming with the .NET IL Linker. We will finish the course by learning about production performance monitoring for .NET Core.
Goal of the course
Course style
The course is a mix of theory and practice. Tools and concepts with their theoretical background will be introduced with slides and then the theoretical knowledge will be applied in demos.