About PerfView

An independent resource covering Microsoft’s free .NET performance analysis tool.

What PerfView actually is

PerfView is a free, standalone Windows tool for diagnosing performance problems in .NET applications. It profiles CPU usage, tracks memory allocations, analyzes garbage collection behavior, and captures ETW (Event Tracing for Windows) events. The entire thing ships as a single .exe file – no installer, no dependencies beyond .NET Framework 4.7.2.

If your .NET app is slow and you don’t know why, PerfView is probably the first tool a Microsoft engineer would reach for. It handles problems that Visual Studio’s built-in profiler struggles with: multi-gigabyte traces, production server analysis, and deep GC diagnostics.

How PerfView got here

Early 2010s

Vance Morrison, an architect on Microsoft’s .NET runtime team, built PerfView as an internal tool. The CLR performance team needed something that could handle the massive ETW traces generated during runtime development. Existing tools either crashed on large files or couldn’t parse the custom ETW providers the team used.

2012

Microsoft released PerfView publicly as a free download. The .NET community had been asking for better profiling tools, and PerfView filled a gap that commercial tools like dotTrace only partially covered. It was rough around the edges, but powerful.

2015

Vance Morrison recorded a series of tutorial videos on Channel 9 (now Microsoft Learn). These videos became the standard way people learned PerfView. They’re still referenced regularly on Stack Overflow and in .NET performance discussions.

2017

The source code moved to GitHub under the MIT license. This opened up contributions from the broader community and made the development process more transparent. The tool gained EventPipe support for .NET Core, which was a big deal as the ecosystem shifted away from .NET Framework.

2020s

PerfView added flame graph visualization, improved .NET Core/5+ support, and continued receiving regular updates. Version 3.x brought better handling of large traces and more intuitive navigation. The tool is actively maintained by Microsoft engineers.

What makes it useful

Most .NET developers hit performance problems at some point. The app is slow, memory keeps growing, or the GC pauses are too long. PerfView handles all of these.

CPU profiling

Sampling-based CPU profiling with call tree analysis. You can see exactly which methods consume time, with inclusive and exclusive percentages.

Memory analysis

GC heap dumps show what objects exist in memory and who holds references to them. Good for tracking down memory leaks and understanding allocation patterns.

Wall-clock analysis

Blocked-time analysis identifies where threads wait on locks, I/O, or other threads. This catches latency problems that CPU profiling misses entirely.

Flame graphs

Visual call stack hierarchy. Wider bars mean more time spent. It’s a fast way to spot the hot paths in your code without reading through tables of numbers.

PerfView also supports trace differencing (compare before and after), pattern folding for large traces, and custom ETW event analysis. The learning curve is real, but there’s a reason the .NET team uses it internally.

The people behind it

PerfView was created by Vance Morrison, a long-time architect on the .NET runtime team at Microsoft. Vance has been working on CLR performance since the early days of .NET, and he built PerfView to solve problems he encountered while optimizing the runtime itself.

The tool is maintained on GitHub under Microsoft’s organization. Other Microsoft engineers contribute regularly, and the project accepts community pull requests. Development happens in the open, with issues tracked on GitHub.

Vance’s tutorial videos remain the best introduction to both PerfView and .NET performance analysis in general. He has a knack for explaining complex topics like GC generations and ETW providers in a way that’s actually followable.

Who uses PerfView

PerfView has a specific audience: .NET developers dealing with performance problems they can’t solve with simpler tools. It’s used heavily by:

  • Backend engineers debugging slow API responses in ASP.NET applications
  • The .NET runtime team at Microsoft (they use it daily)
  • Game developers working with Unity who need to understand GC pressure
  • Enterprise teams investigating memory growth in long-running services
  • Performance consultants who need detailed trace data for client reports

The community sentiment is consistently positive, though people are honest about the UI. “Ugly but powerful” is the common description. The interface is a Windows Forms application that looks like it’s from 2008, but the analysis depth is hard to match with anything free. Commercial alternatives like JetBrains dotTrace and dotMemory offer smoother experiences, but PerfView handles scenarios they don’t, especially around ETW analysis and large trace files.

About this website

perfview.net is an independent, fan-made resource. We are not affiliated with Microsoft, Vance Morrison, or the PerfView development team.

This website exists to provide information, guides, and official download links for PerfView. We do not host or modify the software. All download links point to official sources (GitHub Releases and Microsoft’s download servers).

We respect the PerfView team and their work. If you find PerfView useful, consider contributing to the GitHub repository or reporting issues you encounter.

Get in touch

Have a question about this website or want to suggest an improvement? Visit our Contact page.

For help with PerfView itself, check the GitHub Issues page or Vance Morrison’s tutorial series on Microsoft Learn.