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

标签 c# xaml user-interface win-universal-app uwp

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

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

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

对于第二点,我只是想记录计算机内部处理XAML代码需要多长时间(不包括渲染UI、运行组合引擎、使用Direct3D处理——只处理XAML)。我的第一直觉是简单地在 this.InitializeComponent() 之前启动 Stopwatch,然后立即结束。但是,我没有看到基于页面内容的数据发生变化。例如,无论我使用 XAML 设计器上定义的 100 个 ToggleSwitch 还是 5 个 ToggleSwitch 来运行我的应用程序,this.InitializeComponent() 方法都需要相同的时间。我有什么想法可以更好地衡量这个数据点吗?

非常感谢任何帮助。

最佳答案

Application Timeline 工具可能会帮助您(随 Visual Studio 2015 提供)。

Timeline
(来源:s-msft.com)

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

关于c# - 如何衡量通用 Windows 应用程序中的 XAML/UI 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34006364/

相关文章:

java - 应用程序在启动时以两 Pane 模式崩溃

c# - ListBox Horizo​​ntalContentAlignment = 拉伸(stretch)无法正常工作

c# - SizeChanged 上的 ScrollViewer ChangeView

java - 如何为 Jtable 中的行添加边框?

java - 将 JDialog 居中于父级之上

c# - 分离 View 、命令表示(Text、Icon)和命令逻辑(Execute、CanExecute)

c# - 为什么session对象会抛出空引用异常?

c# - 自定义 ValidationAttribute ErrorMessage 未按预期工作

c# - Azure 应用服务后端 - 数据库优先

c# - 从调用方法中获取参数名称