Category Archives: xperf

Self Inflicted Denial of Service in Visual Studio Search

After upgrading to Visual Studio 2013 I noticed that find-in-files had a problem when searching directories. The VS IDE would repeatedly hang, rendering it completely useless for the duration of the search. I filed a bug, complete with ETW traces … Continue reading

Posted in Investigative Reporting, Performance, Programming, Visual Studio, xperf | Tagged , | 11 Comments

You Got Your Web Browser in my Compiler!

I recently discovered that Microsoft’s VC++ compiler loads mshtml.dll – also known as Internet Explorer. The compiler does this whenever the /analyze option (requesting static code analysis) is used. I’m no compiler architecture expert, but a compiler that loads Internet … Continue reading

Posted in Code analysis, Investigative Reporting, Performance, Visual Studio, xperf | Tagged , , , | 84 Comments

Make VC++ Compiles Fast Through Parallel Compilation

The free lunch is over and our CPUs are not getting any faster so if you want faster builds then you have to do parallel builds. Visual Studio supports parallel compilation but it is poorly understood and often not even … Continue reading

Posted in Performance, Visual Studio, xperf | Tagged , , , , | 50 Comments

Process Tree from an Xperf Trace

I was looking at an xperf (ETW) trace recently and needed to know who had started a particular process. The parent process ID was stored in the trace so I could find its parent, and its parent’s parent, and so … Continue reading

Posted in xperf | Tagged , , , , | 11 Comments

Exporting Arbitrary Data from xperf ETL files

The 8.1 and above versions of xperf/WPA/WPT comes with a tool called wpaexporter. This tool works as promised and lets you export arbitrary summary tables to .csv files, thus allowing for automated analysis of xperf traces.

Posted in Documentation, Performance, xperf | Tagged , , , | 16 Comments

New Version of Xperf–Upgrade Now

The latest version of xperf/wpa/WPT (Windows Performance Toolkit) was released October 17, 2013 along with Windows 8.1. If you care about performance on Windows (or Xbox One – rumors tell me xperf is used there as well) then you need … Continue reading

Posted in Performance, xperf | Tagged , | 15 Comments

50 Bytes of Code That Took 4 GB to Compile

While doing evil things with macros and the inline assembler (trying to run a weird test whose purpose is not really relevant) I managed to write a program that caused Visual Studio’s C++ compiler to allocate 4 GB of memory … Continue reading

Posted in Investigative Reporting, Programming, Visual Studio, xperf | Tagged | 37 Comments

Defective Heat Sinks Causing Garbage Gaming

Sometimes being hot is not cool. When Valve’s customers have performance problems in our games we sometimes ask them to send in xperf traces for us to examine. In some cases this lets me find performance bugs that didn’t show … Continue reading

Posted in Investigative Reporting, Programming, xperf | Tagged | 53 Comments

The New WPA Xperf Trace Viewer–New Bugs and Old

Every Windows performance expert should be using xperf traces. My preferred viewer for xperf traces is WPA – Windows Performance Analyzer. However the Windows 8 version of this tool has a few bugs in its display of custom ETW events. … Continue reading

Posted in Bugs, xperf | Tagged , , | 3 Comments

Xperf for Excess CPU Consumption: WPA edition

Last year I wrote an article about how to use xperf to analyze a CPU bound program, using the xperfview UI. Since then the WPA UI has come out and replaced xperfview. This updated version of the article explains how … Continue reading

Posted in xperf | Tagged , , , | 13 Comments