如何衡量通用Windows应用程序中的XAML/UI性能?

D. *_*son 6 c# user-interface xaml win-universal-app uwp

我正在使用Visual Studio中的"空白应用程序"Visual C#模板构建通用Windows应用程序(UWP).我想在运行应用程序时测量两个数据点:

  • 在创建/更改XAML元素后,U​​I需要多长时间才能完全更新?
  • 程序在内部处理XAML元素需要多长时间,无论更改是否反映在UI中?

对于第一点,假设我正在创建一个在MainPage.xaml中将5个ToggleSwitches定义为XAML的应用程序.我想测量UI显示所有5个ToggleSwitch所需的时间.我在MainPage.xaml.cs中的this.InitializeComponent()命令之前放置了一个秒表计时器(因为我假设这是Designer XAML元素的处理开始的地方).我想在窗口正确涂漆后立即停止计时器.我已经尝试了XAML元素的Loaded和LayoutUpdated事件,但是在UI更新时都没有触发.我在哪里放置计时器来获取我寻找的数据?如果我在调试器中单步执行代码,那么"Step Over"代码行将导致UI刷新?

对于第二点,我只想记录计算机内部处理XAML代码所需的时间(不包括渲染UI,运行合成引擎,使用Direct3D处理 - 只处理XAML).我的第一直觉是在此之前简单地启动秒表.InitializeComponent()并在之后立即结束.但是,我没有看到基于页面内容的数据更改.例如,无论我是使用XAML Designer上定义的100个ToggleSwitches还是5个ToggleSwitches运行我的应用程序,this.InitializeComponent()方法都需要相同的时间.我有什么想法可以更好地衡量这个数据点吗?

任何帮助深表感谢.

小智 3

应用程序时间线工具可能会帮助您(Visual Studio 2015 提供)。

时间线
(来源:s-msft.com

使用应用程序时间线工具分析 UI 响应能力 https://msdn.microsoft.com/en-us/library/dn957934.aspx