Visual Studio 2010中的Profiler使用
2015-03-05 16:19
246 查看
Visual studio 2010 的Profiler是自带的性能工具, 利用它我们可以找出程序中的性能瓶颈,然后不断优化不断再测试。
Sampling:按设置的时间间隔中断计算机处理器并收集函数调用堆栈。
调用堆栈是一个动态结构,用于存储有关正在处理器上执行的函数的信息。这个分析方法形成的结果就是各个函数在运行时被采样的次数,次数越大代表开销越大。因为对被测源码不需要更改,所以直接启动或者后期附加到被测程序都可以。
Instrumentation:在被测源码文件中目标函数的开始和结尾以及这些函数对其他函数的每次调用前后插入代码。
插入的代码记录了以下信息:
此收集事件与上一收集事件之间的间隔。
在此间隔内操作系统是否执行了操作。
例如,操作系统可能读写磁盘,或者在目标线程与另一个进程中的另一个线程之间进行切换。
根据”Tools\Options\Performance Tools\“ 下‘Show time values as:’的默认设置为Milliseconds,我觉得采样周期应该是毫秒级,也就是说报告中采样次数可以约等于毫秒。
针对Release版本的程序
设置好程序所需的pdb路径
通过‘Analyze\Launch Performance Wizard…’ 或者‘Analyze\Profiler\Attach or Detach…’对被测程序进行新建Performance Session(性能会话), 我们主要介绍下Sampling通过Attach To Process的情况下报告的分析。
Profiler开始后,类似:
当你觉得已经收集了足够的信息可以停止后, 点击‘Stop profiling’, 类似:
上述界面就是报告的Summary, 我们开始分析程序的性能瓶颈。
‘Hot Path’指的就是采样次数高的,也就是性能瓶颈的函数。
‘Inclusive Samples’指的是该函数整体被采样的次数,说白了,就是函数本身以及它所调用的所有子函数的总共开销大小。
‘Exclusive Samples’指的是该函数本身被采样的次数,说白了,也就是函数自己的开销大小,不包含它所调用的子函数的开始。
‘Funcions Doding Most Individual Work’指的是开销最大的单个函数,因此它的指标是用‘Exclusive
Samples’来表示。
通过上述几个介绍,我们就可以从图中得到性能瓶颈的函数, 然后根据Call Tree可以得到完整的调用上下文。
例如,在Summary界面中点击CallTree,按照‘Inclusive Samples’排序,按照开销大小展开方法,最终就可以得到开销大的函数上下文, 类似:
当然,我们也可以通过上面的过滤条件选择”Modules“、”Threads“等方式来找到自己关心的瓶颈。
另外, 我们还可以在Summary界面选择‘Show Just My Code’和适当的CPU时间段来过滤。
参考:Analyzing Application Performance by Using Profiling Tools
简介
Profiler有利用向导启动程序和后期附加到程序两种关联被测模块的方式,测试方式也有两种:Sampling(采样)和Instrumentation(检测)。Sampling:按设置的时间间隔中断计算机处理器并收集函数调用堆栈。
调用堆栈是一个动态结构,用于存储有关正在处理器上执行的函数的信息。这个分析方法形成的结果就是各个函数在运行时被采样的次数,次数越大代表开销越大。因为对被测源码不需要更改,所以直接启动或者后期附加到被测程序都可以。
Instrumentation:在被测源码文件中目标函数的开始和结尾以及这些函数对其他函数的每次调用前后插入代码。
插入的代码记录了以下信息:
此收集事件与上一收集事件之间的间隔。
在此间隔内操作系统是否执行了操作。
例如,操作系统可能读写磁盘,或者在目标线程与另一个进程中的另一个线程之间进行切换。
根据”Tools\Options\Performance Tools\“ 下‘Show time values as:’的默认设置为Milliseconds,我觉得采样周期应该是毫秒级,也就是说报告中采样次数可以约等于毫秒。
使用
用管理员启动Visual Studio针对Release版本的程序
设置好程序所需的pdb路径
通过‘Analyze\Launch Performance Wizard…’ 或者‘Analyze\Profiler\Attach or Detach…’对被测程序进行新建Performance Session(性能会话), 我们主要介绍下Sampling通过Attach To Process的情况下报告的分析。
Profiler开始后,类似:
当你觉得已经收集了足够的信息可以停止后, 点击‘Stop profiling’, 类似:
上述界面就是报告的Summary, 我们开始分析程序的性能瓶颈。
‘Hot Path’指的就是采样次数高的,也就是性能瓶颈的函数。
‘Inclusive Samples’指的是该函数整体被采样的次数,说白了,就是函数本身以及它所调用的所有子函数的总共开销大小。
‘Exclusive Samples’指的是该函数本身被采样的次数,说白了,也就是函数自己的开销大小,不包含它所调用的子函数的开始。
‘Funcions Doding Most Individual Work’指的是开销最大的单个函数,因此它的指标是用‘Exclusive
Samples’来表示。
通过上述几个介绍,我们就可以从图中得到性能瓶颈的函数, 然后根据Call Tree可以得到完整的调用上下文。
例如,在Summary界面中点击CallTree,按照‘Inclusive Samples’排序,按照开销大小展开方法,最终就可以得到开销大的函数上下文, 类似:
当然,我们也可以通过上面的过滤条件选择”Modules“、”Threads“等方式来找到自己关心的瓶颈。
另外, 我们还可以在Summary界面选择‘Show Just My Code’和适当的CPU时间段来过滤。
参考:Analyzing Application Performance by Using Profiling Tools
相关文章推荐
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- Visual Studio 2010使用Visual Assist X的方法
- 使用Visual Studio 2010/2013编译V8引擎步骤分享
- 如何使用Visual Studio 2010在数据库中生成随机测试数据
- Visual Studio 2010 实用功能:使用web.config发布文件替换功能
- DUIEngine使用Visual Studio 2010编译Debug_Dll版有关Error MSB3073错误解决方案
- visual studio 2010 自带reporting报表本地加载的使用
- Visual Studio 2010 下 Boost.Regex 库的使用笔记
- Visual Studio 2010——C#的ListBox控件的使用
- 在Visual Studio 2010 中使用菱形向导对窗口进行布局
- visual studio 2010 和 VSS(Visual SourceSafe)的连接使用
- Visual Studio 2010 使用笔记
- cocos2d-x 如何使用Visual Studio 2010和xcode 4混合编写手机游戏
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- 使用Visual Studio 2010进行UI自动化测试
- 在visual studio 2010中使用NUnit-2:测试异常
- 在Visual Studio 2010里面使用.NET 4.5里面新增加的HttpClient
- Visual Studio 2010环境下Sqlite3加密版(由wxSqlite制作)使用方法
- 提高你开发效率的十五个Visual Studio 2010使用技巧
- SharePoint 2010中使用Visual Studio 2010进行方便快速的Web Part开发