用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途
对 .NET 程序进行性能分析,dotTrace 能应对绝大多数的场景。在开启一个进程进行性能分析之前,我们会看到一些性能分析选项(Profiler Options)。本文将介绍这几个选项的含义,并用实际的例子来说明其用途。
dotTrace 的性能分析选项
你可以前往 Download dotTrace: .NET Performance Profiler by JetBrains 下载 dotTrace。
本文要说的就是下图右边的那四个选项,在启动一个进程进行性能分析之前可以看得见的。

▲ dotTrace 启动进程进行性能分析的界面
有四个选项:
- Sampling
- Tracing
- Line-by-Line
- Timeline
Sampling 采样
界面中的描述为:
Accurate measurement of call time. Optimal for most use cases.
使用此选项进行启动进程后,会准确测量不同方法的执行时间,但不会统计方法的调用次数。
这适用于大多数场景。尤其是如果你还没有对你的程序进行过任何性能分析的情况下,先使用这个选项进行一个初步分析大致确定性能问题是很方便的。
Tracing 追踪
界面中的描述为:
Accurate measurement of calls number. Optimal for analyzing algorithm complexity.
会准确地测量调用次数。但在此选项下,时间的测量将由于性能分析的开销过大而可能不准确。
如果你使用 Sampling 分析方式得不到你想要的性能分析数据的时候,你可能用得到此选项。例如,当你分析算法复杂度,需要明确知道方法的调用次数,而不需要知道方法的准确执行时间的时候。
Line-by-line 逐行
界面中只写了一句根本无法理解的话:
Advanced use cases only.
仅仅说了这是高级使用场景,名没有说什么样的场景。
这个选项下,分析器会测量每行代码。由于性能分析的开销过于巨大,调用时间的测量也是不准确的。如果要降低此选项下的开销,你可以使用过滤器仅分析特定的方法。关于使用过滤器,可以阅读官方文档 Profiler Options - Help - dotTrace。
当你已经通过其他方法得知性能问题出现在哪个具体的方法时你可能需要用到这个选项,这会分析此方法的每一行代码。
Timeline 时间线
界面中的描述为:
Measurement of temporal performance data. Optimal for most use cases including analysis of multi-threaded applications.
收集有关线程状态、应用程序事件和其他多线程数据的时态数据。此方法基于 Windows 的事件跟踪器(ETW)。
推荐用于大多数情况,尤其是分析多线程应用程序的时候。你可以用这个选项来确定 UI 卡顿或不响应的原因,可以分析过多的 GC(垃圾回收),可以分析不均匀的工作负载分配、IO 不足或者其他各种异常。
由于需要用到 Windows 的事件跟踪器(ETW),所以你可能遭遇 ETW 相关的问题。具体可以阅读 用 dotTrace 进行性能分析时,Timeline 打不开?无法启动进程?也许你需要先开启系统性能计数器的访问权限。
参考资料
用 dotTrace 进行性能分析时,各种不同性能分析选项的含义和用途的更多相关文章
- Linux C++程序进行性能分析工具gprof使用入门
性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...
- [转]程序进行性能分析工具gprof使用入门
性能分析工具 软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键.这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是 ...
- PHP 性能分析第一篇: Xhprof & Xhgui 介绍
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 什么是性能分析? 性能分析是衡量应用程序在 ...
- PHP 性能分析第一篇: Intro to Xhprof & Xhgui
[前言]这是国外知名博主 Davey Shafik所撰写的 PHP 应用性能分析系列的第一篇,阅读第二篇可深入了解 xhgui,第三篇则关注于性能调优实践. 原文链接如下: https://blog. ...
- 性能分析之TCP全连接队列占满问题分析及优化过程(转载)
前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的. 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候, ...
- Java性能调优:利用JMC进行性能分析
JMC, 即Java任务控制(Java Mission Control)是从Java7(7u40)和 Java8 的商业版本包括一项新的监控和控制特性. JMC 程序 (JDK_HOME\bin目录下 ...
- 使用VisualVM进行性能分析及调优(转)
VisualVM 是一款免费的\集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...
- [转]设置Android手机以使用ARM Streamline进行性能分析(二)
原文因为arm社区改版访问不到了,原作者鲍方,原文地址,这篇是从google cache里挖出来的,希望能帮到要对cocos2dx优化的各位 Posted by Fang Bao, Leave C ...
- 使用 VisualVM 进行性能分析及调优
VisualVM 是一款免费的性能分析工具.它通过 jvmstat.JMX.SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态 ...
随机推荐
- keras实现不同形态的模型
keras提供了Sequential线性的模型,但是有些网络需要多个输入,有些网络有多个输出,更甚之层与层之间有内部分支,这使得网络看起来像是层构成的图,而不是线性的堆叠.有些场景需要多模态的输入,这 ...
- requirements.txt
在文件夹下 生成requirements.txt文件 pip freeze > requirements.txt 安装requirements.txt依赖 pip install -r requ ...
- FILE 文件的使用 (VC、BCB、Qt)
FILE * fp ;AnsiString filePath="";fp= fopen(filePath.c_str(),"wb");//第二个参数是文件打开方 ...
- AtCoder Grand Contest 030 Solution
A - Poisonous Cookies 签到. #include <bits/stdc++.h> using namespace std; #define ll long long l ...
- 892. Surface Area of 3D Shapes
问题 NxN个格子中,用1x1x1的立方体堆叠,grid[i][j]表示坐标格上堆叠的立方体个数,求这个3D多边形的表面积. Input: [[1,2],[3,4]] Output: 34 思路 只要 ...
- this指向 - Node环境
1.全局上下文中 this /* 1.全局上下文中的 this node环境下: 严格模式下: {} {} 报错 非严格模式下:{} {} {} */ 'use strict'; // 严格模式 // ...
- 项目中使用protobuf 3.0
protocol buffer从3.0 原生的compiler支持c++,Java,Python,Go,Ruby,JavaNano,JavaScript,Objective-C,C#,PHP这篇文章作 ...
- hdu 5687 Problem C trie树
Problem C Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Prob ...
- H5 canvas控制坦克移动
接着上一篇(http://www.cnblogs.com/zhouhuan/p/H5_tankgame.html),这一篇研究一下怎么响应玩家的操作让坦克进行相应的移动. 1. 了解keydown ...
- css样式中position和_position的区别
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAEUCAIAAADhh5PYAAAgAElEQVR4nO3dPa/rNoLGcX6dW6UL+B ...