Event Tracing for Windows (ETW) provides application developers the ability to start and stop event tracing sessions, instrument an application to provide trace events, and consume trace events.
In addition to Windows itself, WPF also emits an array of interesting events that can be used to track the execution of an application at the framework level.
Mike Cook wrote a great document that explain the various ETW events emitted by WPF.
Check out the this documentation here.
You are encouraged to use these events to measure and analyze your WPF application performance.
The WpfPerf tool for example, use these events extensively. In addition, the WPF team is also using ETW in its automated tests to analyze WPF performance and catch regressions.
Attached is also a sample that demonstrates how you can consume one of these events (UceNotifyPresent event) to measure frame-rate (aka FPS , Frame-per-Second) in a WPF application.
The sample animates a rectangle and outputs the FPS to a command window . It is writing to a command window and not to the main app window so that it will not affect the real FPS.
You should expect to see frame-rate tied to the refresh rate of your monitor.
Special thanks to Mike Cook and TJ Hsiang who helped put this sample together.