Measuring .NET Performance

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.
Course info
Rating
(165)
Level
Intermediate
Updated
Jul 9, 2015
Duration
3h 18m
Table of contents
Description
Course info
Rating
(165)
Level
Intermediate
Updated
Jul 9, 2015
Duration
3h 18m
Description

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.

About the author
About the author

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.

More from the author
Making .NET Applications Even Faster
Intermediate
3h 10m
12 Nov 2014
Making .NET Applications Faster
Intermediate
1h 47m
12 May 2014
Section Introduction Transcripts
Section Introduction Transcripts

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.