请选择 进入手机版 | 继续访问电脑版

Aic-tech BBS

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 1070|回复: 3

VS2013中进行代码性能分析

[复制链接]

15

主题

25

帖子

431

积分

超级版主

Rank: 8Rank: 8

积分
431
发表于 2017-6-9 14:35:05 | 显示全部楼层 |阅读模式
笔者在某个开发完成后想对代码性能进行优化,主要是希望优化程序处理时间,所以就需要对程序耗时进行分析~
有一个获取程序运行时间的常规方法:在程序起始处记下时刻,程序结束处记下时刻,然后二者做个差值,程序运行时间就出来了~
但是,在要分析的程序段比较多时,这样的方法就很麻烦了~

其实,VS开发工具本身是集有性能分析工具的~
以下说明以VS2013版本为例(VS2015版本该功能的实现更加简单,此区别后面再述)

先附官方说明:Performance and Diagnostics
在VS2013中菜单栏 DEBUG => Performance and Diagnostics 或 ANALYZE => Performance and Diagnostics 或 Alt+F2 打开该功能模块

如下图所示

点击Start,选择性能分析方法

一共有上面四种,根据需要选择;如本处进行程序运行时间分析,则选取Instrumentation;然后选择要分析的模块,可多选

点击“Next”,而后再确认点击“Finish”,开始程序分析……

………………………………分割线…………………………
程序执行完后,打开程序分析报告,如下图所示

可以在上面切换报告显示内容,默认为“Summary”;切换到“Functions”可以看到各个函数的执行情况

这里可以看到各个函数的执行耗时与占比,右击待分析的函数还可以查看详情

在详细内容里就可以分析具体函数各个子代码执行耗时,那么也就可以比较直观的分析程序耗时情况了~



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
决策远比执行要难得多……
回复

使用道具 举报

15

主题

25

帖子

431

积分

超级版主

Rank: 8Rank: 8

积分
431
 楼主| 发表于 2017-6-9 14:51:56 | 显示全部楼层
在应用上面的方法过程中可能遇到下面这样一个问题:
开始执行程序分析时,有可能弹出如下图所示的提示框

如果直接选择“Yes”的话,VS输出窗口中可能会报出分析失败的错误,然后自动结束~

这里有微软的官方说明:
Instrumenting an signed assembly would throw warning message: "XXX.DLL/XXX.EXE has been signed. Instrumenting will break verification...."

简单来说呢,是因为你的程序集加上了签名,程序集得以被保护,然而VS的Instrumentation性能分析需要……呃呃呃,我不知道这个该用什么中文名词来描述,所以直接把英文说明贴在这吧——
One of the reasons this happens is the that the Visual Studio profiler would break the strong name for the signed assemblies when you try to instrument the assembly. That would lead to an exception when the profiler tries to attach to the signed assembly as the strong name for the signed assembly is broken. This would lead to an internal exception and the profiler would not be able to collect the logs for the instrumentation.

解决方法有两个:
①为性能分析指定检测后指令
②注册程序集跳过验证
详细内容不再赘述,请查看源链接~

下面给出一个直接的解决操作
在VS的开发命令里直接执行这句代码就OK  >>>   sn.exe -Vr *




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
决策远比执行要难得多……
回复 支持 反对

使用道具 举报

15

主题

25

帖子

431

积分

超级版主

Rank: 8Rank: 8

积分
431
 楼主| 发表于 2017-6-9 14:57:53 | 显示全部楼层
补充一下如何执行VS的开发命令呢,提供一个方便的方法:

在VS2013菜单中选择 "Tools",然后选择"External Tools". 添加上下面这样一个命令
  • Title: "VS2013 Native Tools-Command Prompt" 就可以
  • Command: C:\Windows\System32\cmd.exe
  • Arguments: /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat"
  • Initial Directory: 根据需要自己选,也可以不填。
点击“OK”,这样就加上Tool菜单里加上了一个命令.
就像下图这样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
决策远比执行要难得多……
回复 支持 反对

使用道具 举报

15

主题

25

帖子

431

积分

超级版主

Rank: 8Rank: 8

积分
431
 楼主| 发表于 2017-6-9 15:01:29 | 显示全部楼层
最后再备注下VS2013和VS2015此功能实现上的不同

官方说明:Performance and Diagnostic Tools in Visual Studio 2015


vs2015不但功能全了,界面也更直观了,最主要的是VS2013得把程序停了才能看报告,VS2015程序执行中就可以看……

决策远比执行要难得多……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Beijing Advanced Information and Control Co. Ltd.

GMT+8, 2019-10-15 10:19 , Processed in 0.089826 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表