This document summarizes the .NET Framework and Tools roadmap from 2006 to 2008. It outlines the releases of .NET Framework 3.0, 3.5, and 3.5 SP1 as well as Visual Studio releases. It also provides an overview of new features for Windows Presentation Foundation (WPF) in these releases like enhanced graphics capabilities, new controls, and performance improvements. The document concludes with recommendations for tools to optimize WPF application performance.
5. WPF in a nutshell
Rich Windows Applications
Great Architecture + Great Graphics
Rapid Prototyping
2D, 3D, Vector, Document
Flow, Layouts, Composition, etc.
6. WPF 3.5 Enhancements
• .NET Framework • Interactive 2D on 3D • Cold Startup
Client Profile • Pixel Shaders and Improvements
• ~25MB client subset Effects Model • Several perf
of .NET Framework • DirectX Interop enhancements
• Customized install • New Controls • Profiling tools and
experiences instrumentation
Deployment Graphics Performance
7. .NET Client Profile
~25MB Client-only Subset of .NET Fx
Includes WinForms, WPF, LINQ, etc.
Excludes ASP.NET, WCF, etc.
200KB fully customizable Bootstrapper
8. .NET Framework Client Profile
Using the Client Profile Deployment option in Visual Studio 2008
SP1
9. WPF 3.0 Graphics Recap
Rich set of 2D drawing primitives
Basic 3D functionality via Viewport3D
Rich Media Integration
Extensive Animation System
Advanced Text Stack
Bitmap Effects
Imaging
Compositor
10. WPF 3.5 Graphics Enhancements
True Interactive 2D-on-3D
Pixel Shaders Effects Model
Hardware-Accelerated
HLSL Support
DirectX Interop
Interop Bitmap
Replaces Writeable Bitmap
Faster Layered Window Support
Animation Fixes
12. New Controls
Web Browser Control
Interop between HTML and WPF content
WPF -> HTML
WPF application can call script methods in HTML with
WebBrowser.InvokeScript
HTML -> WPF
Script in HTML can call methods and access properties
on WebBrowser.ObjectForScripting that are COM-
Visible with window.external
Load hosted HTML content from a stream or
string
Access the document object loaded in the
WebBrowser
13. New Controls
DataGrid Control
Available from WPF Toolkit
(www.codeplex.com/wpf)
CTP Release with several features, being further
improved upon
Ribbon-UI Control
Part of a future release with other controls and
style templates
15. Performance Enhancements
Greatly improved cold start time
>15% cold start gains for small apps
>35% cold start gains for large apps
XBAP cold start improvements (real +
perceived)
~10% faster XBAP cold start in addition to gains
above by improving the concurrency of the
ClickOnce download sequence
Instant (HTML) download progress UX to improves
perceived XBAP startup
16. Performance Enhancements
Splash Screen to improve perceived startup for
Standalone apps
New public SplashScreen APIs
Intuitive VS integration (3 clicks to enable)
“Add / New Item…/SplashScreen (WPF)”
Sample code available for existing apps or for
downlevel targeting
Downloadable VS Template from WPF Futures
(www.codeplex.com/wpf)
17. Perf Tools
Snoop
Generally useful to understand your app, view
element tree.
WPFPerf Suite
Perf “power toy”, a set of diagnostic tools
Visual Studio Profiler
Great for CPU profiling
VS Developer Edition and VS Team Suite
CLR Profiler for .NET
Shows managed memory usage and leaks
18. Perf Tools
Snoop
Use to understand the size of the app Visual tree
Useful to detect Virtualization related issues & large app trees
19. Perf Tools
Snoop
Customer app lessons learned:
Watch for conditions that may turn virtualization off:
• Make sure ScrollViewer.CanContentScroll=True
• Make sure VirtualizingStackPanel.IsVirtualizing=True
• Keep VirtualizingStackPanel as your default panel …or write own virtualized
panel.
• Avoid Grouping
# of elements can grow also when using rich
templates
Use Snoop to watch element count
20. Perf Tools
WPF Perf Suite
Available for external download (WPF SDK & forums)
Initial diagnosis of over-invalidation & software rendering
A set of tools:
Perforator: Analyzes general rendering behavior
Visual Profiler: Provides breakdown of an object's use of
WPF services, such as rendering and layout
String profiler (new): Analyzes where strings are being
allocated
Event Trace: Analyze events and generating event log files
Trace Viewer: Record, display, and browse ETW log files in a
WPF user-interface format
21. Perf Tools
WPF Perf Suite: Perforator
To detect low perf b/c SW rendering:
Tint SW rendering: Draws purple when falling back to SW (or when SW api
used, old driver, card, layered windows on XP, etc)
# SW Render Targets: If not 0, significant perf problem (old card, layered
windows on XP)
# HW Render Targets: # should be equal to the number of app windows
times # of display adapters. Indicates app running in HW
Low perf indicators
Large # of Intermediate Render Targets: additional images that WPF needs
in order to get content ready for drawing
Maximum SW/HW IRTs per Frame: Shows max # of surfaces needed to
render any one frame of the application. Usually caused by the use of
DrawingBrush, VisualBrush, Opacity, or Tile modes on a TileBrush. If # high
(e.g. > 7), indicates a potential perf issue
23. Perf Tools
WPF Perf Suite: Visual Profiler
Inspect the Visual Tree
Show “hot path” of layout time: Tints the elements in the
tree based on their time spent in layout
Shows inclusive/exclusive times and element counts
History graph of time breakdown: Helps identify whether
an application’s bottlenecks lie in
layout, rendering, animation, etc
25. Perf Tools
ETW Event Trace & Event Trace Viewer
Useful to view low-level WPF
ETW events.
WClientUceNotifyPresent: Use to
calculate frames-per-second
rendering perf (e.g. during
animation, video, etc)
WClientLayout: Use to calculate time
app spends in laying out controls
(e.g. during resize)
Can also use Xperf/Xperfinfo
27. References
What’s new in WPF 3.5 SP1?
http://windowsclient.net/wpf/wpf35/wpf-whats-new-35sp1.aspx
Introducing .NET Framework Client Profile
http://windowsclient.net/wpf/wpf35/wpf-intro-client-profile.aspx
Optimizing WPF App Performance MSDN paper
http://msdn2.microsoft.com/en-us/library/aa970683.aspx
Snoop tool
http://www.blois.us/Snoop
Various performance related blog
http://blogs.msdn.com/jgoldb
28. Contact
Blog Address
www.thinkingMS.com/pandurang
Email Address
pandurang.nayak@microsoft.com