Let's Talk about Memory
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).