WPF性能调试系列 – 应用程序时间线
WPF性能调试系列文章:
WPF页面渲染优化:Application Timeline
WPF页面业务加载优化:Ants Performance Profiler
应用程序时间线(Application Timeline)
应用程序时间线工具是VS2015新添加的功能,通过对WPF程序的检测,可以分析应用程序消耗的时间包含用户界面框架、服务网络和磁盘请求、程序启动及页面加载。此处重点介绍程序加载和页面加载的时间性能分析。
模拟分析应用程序
打开VS2015,通过菜单分析(N)-> 性能探测器(F)打开分析器,在可用工具中选择应用程序时间线。

注: 1. 不同版本的VS菜单名称可能不相同,上图为VS2015企业简体中文版,根据路径选择具体菜单
2. 分析目标为WPF应用程序可以选择‘应用程序时间线’,不要在包含其他类型的应用程序的项目中打开,会造成此项不可选
开始执行后,wpf应用会打开执行,当需要检测的页面加载完成后可以关闭wpf应用,等待VS自行分析结束后,会输出分析结果。

磁盘和网络活动:频繁的磁盘访问和网络负载在UI线程可能会严重影响应用程序的响应。即使其中的一些I / O访问发生在一个不同的线程上,它仍然可能会影响应用程序的感知响应。这些事件将详细的总的有效载荷和时间花费在服务的I / O请求。
XAML文件加载的分析时间包含:布局,解析和呈现部分的分析

布局:比较大型应用中可能会有巨大数量的元素同一时间在页面上显示,这就导致了应用程序页面的低响应速度。布局详细的标明每个元素的加载成本。通过找到具体某个低响应速度的控件进行优化。
解析:这一事件能够识别由UI线程在解析XAML文件和创建对象的时间。这能够在性能瓶颈的情况下识别不必要的文件解析和对象创建,并优化它们。
呈现:具体页面控件呈现在显示器所需要的时间,此部分一般无需做为优化所需要考虑的范畴。
举例查找页面加载的性能瓶颈:

通过页面加载的时间线,发现一个自定义控件的解析时间需要356.85毫秒,远远超过了其他页面的加载时间,现在需要直接进入自定义控件进行页面复杂度分析

查看页面察觉到使用到了页面比较耗性能的Chart图表控件,这种情况就可分析真实业务需求,是否可以通过其他控件代替?或和用户做对应的技术讲解?等等。
上面是VS2015中应用程序时间线的使用方法,主要用于检测UI层性能瓶颈。关于数据访问层和业务逻辑层的瓶颈可使用大名鼎鼎的ANTS Performance profiler工具。
WPF性能调试系列 – 应用程序时间线的更多相关文章
- WPF性能调试系列 – 内存监测
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants M ...
- WPF性能调试系列 – Ants Performance Profiler
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants Memor ...
- vs调试windows mobile程序时布署时间太长的解决办法
vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...
- 【转】WinDbg调试器:启动程序时自动连接调试器方法
当我们调试服务进程或子进程时,无法直接用调试加载进程的方式启动,此时需要在启动程序时自动连接调试器方法: 第一步:注册表展开到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft ...
- Windbg程序调试系列5-高CPU问题分析
上篇博客中给大家分享了使用Windbg进行Live Debugging: Windbg程序调试系列4-Live Debugging 本篇中我们继续,跟大家分享常见的应用程序高CPU使用率问题分析. 先 ...
- Windbg程序调试系列3-线程阻塞问题
上一篇博文给大家分享了使用Windbg分析内存泄露问题: Windbg程序调试系列2-内存泄露问题 本篇我们继续跟大家分享,如何分析解决线程阻塞问题. 从根本上讲,线程阻塞属于程序Hang的一种,其表 ...
- Windows程序调试系列: 使用VC++生成调试信息 转
Windows程序调试系列: 使用VC++生成调试信息 ZhangTao,zhangtao.it@gmail.com, 译自 “Generating debug information with Vi ...
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
随机推荐
- 实现优先级队列 --heapq模块
以给定的优先级对元素进行排序,每次pop删除优先级最高的 # coding=utf-8 # example.py # # Example of a priority queue import heap ...
- 实现手机端上下左右滑屏的jq原生代码和使用库·两种办法
先来一个原生的.我使用的是jq. 需要注意的地方就是被触发的元素最好不要是body,这个代码也可以修改,如果obj传进来的是body那么,$(this)必须是你的监听元素,不然会冒泡泡,整个项目就…… ...
- bzoj 1452 二维树状数组
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...
- Java 8 对 List<List<String>> 排序
Java 8 对 List<List> 排序 import java.util.ArrayList; import java.util.List; import java.util.str ...
- JAVA编程思想读书笔记(五)--多线程
接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...
- SSH整合最简单的一个例子
1.新建mysql数据库 create database spring; 切换数据库 use spring; 新建表 create table user (id int(3) auto_incre ...
- Python并发编程-一个简单的爬虫
一个简单的爬虫 #网页状态码 #200 正常 #404 网页找不到 #502 504 import requests from multiprocessing import Pool def get( ...
- RabbitMQ (一)
学习RabbitMQ 可以先先了解一下AMQP 简单介绍: AMQP从一开始就设计成为开放标准,以解决众多的消息队列需求和拓扑结构问题,凭借开发,任何人都可以执行这一标准.针对标准编码的任何人都可以和 ...
- android intent 传递 二进制数据
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 实现序列化.
- 51nod2000 四边形分割平面 规律题
观察样例,$ans(1) = 1, ans(2) = 10$,再手推一组,$ans(3) = 26$ 可以发现规律$ans(n) = (2n - 1)^2 + 1$ 如果还是没看出规律,那么打个程序去 ...