The bottleneck of many modern applications is the main memory. In this case, it's very hard to measure the performance and write correct benchmarks: there are too many things which affect the execution time. In this session, we will talk about how it happens. We will discuss low-level hardware stuff (CPU cache and its associativity, alignment, store forwarding, 4K aliasing, prefetching, cache/page splits, cache bank conflicts, and so on) and .NET specific problems (pinned objects, the large object heap, how does the heap works in the full .NET Framework and Mono).
Andrey is a .NET MVP, a silver medalist of ACM ICPC, the maintainer of BenchmarkDotNet, a fan of micro-optimizations and one of the developers of Rider at JetBrains.