Speaker: Jiří Činčura

Abstract:

Over the last couple of versions on .NET and C#, both added (among others) performance oriented features. These are usually not for everyday use, but in specific cases can make a huge difference in performance. Sometimes even in a way that was very difficult to do previously. In this workshop I’ll teach you the most useful ways how to code with minimal overhead. We’ll also cover how to measure and compare our progress.

Objectives:

Understanding what high performance code means, where to apply it and what might be tradeoffs. Also writing high performance code and spotting opportunities for it.

Topics covered:

  • Understanding memory using Span(T), stackalloc, etc.
  • Marshaling data from/to memory
  • “Safe” unsafe code
  • SIMD
  • Code generation
  • Understandng JIT, TC, PGO and assembly
  • Structures, refs, memory layout
  • Loop optimizations, branches
  • Pools
  • Measuring code, profiling and performance
  • Diagnosing performance

Intended audience:

.NET developers with at least 1 year of hands-on experience with .NET

Required equipment:

PC

Required software:

dotnet, Visual Studio

Workshop type:

Hands-on.