Learn how to measure .NET application performance with a variety of performance tools to diagnose high CPU usage and memory issues, and how to monitor production systems continuously for performance problems.
This course explains how to set performance goals for .NET applications and then measure them methodically. After completing this course, you will be able to use sampling and instrumentation profilers, allocation profilers, memory leak analyzers, and many other tools designed to pinpoint performance issues. You will also learn about performance monitoring tools designed to be used in production environments.
Sasha is the CTO of Sela Group and a Microsoft C# MVP. He specializes in performance optimization, production debugging, distributed/cloud systems, and mobile development. Sasha is also a frequent conference speaker and published book author.
Measuring CPU-bound Application Performance Hi, this is Sasha Golshtein from Pluralsight. In this module, we are going to talk about measuring the performance of CPU-bound applications. We're going to start by talking about what exactly constitutes a CPU-bound application. Then, we are going to use tools that help with only the CPU-related parts of your code, and tools that can measure your execution time holistically and paint an accurate picture of IO costs and other kinds of processing that is not CPU-related. And these tools are sampling and instrumentation profilers. There's a great selection of those available from multiple vendors, and we're going to look at a few. And then at the end of the module, we'll also talk about low-level CPU effects that you'll need specialized tools for to measure. And these are effects like cache misses and pipeline stalls, which can be rather unpredictable and almost impossible to diagnose using standard profilers. An application is CPU-bound if it spends its time doing work on the CPU. So, what kinds of applications are usually CPU-bound? Well, there's rarely an application that spend its entire time on the CPU. Almost every application is going to do some I/O, access the network or database, or even stall while we are waiting for user input or a synchronization mechanism, like a lock. But even an app that does a lot of I/O, might still have large CPU-bound portions. So, some things that require lots of CPU power include image processing, text and image rendering, like HTML layout and rendering and web browsers, text processing and regular expressions, complex LINQ queries on in-memory collections, and so on.