In this chapter, we will discuss the most common mistakes that people make when they try to measure performance. If you want to write benchmarks, you have to accept the fact that most of the time you will be wrong. Unfortunately, there is no universally reliable way to verify that you get the performance metrics you wanted to get. There are many pitfalls on different levels: C# compiler, .NET runtime, CPU, and so on. We will also learn some approaches and techniques to help you to write reliable and correct benchmarks.