但品质超过在此以前使用C++编写的原生完结,Roslyn使用纯托管代码开发

Roslyn的PM(程序COO) BillChiles,Roslyn使用纯托管代码开发,但质量超越以前运用C++编写的原生完毕,那有怎么着窍门呢?他多年来写了一篇小说叫做《Essential
Performance Facts and .NET Framework
Tips
》里头推荐了2脾质量分析工具《Improving
Your App’s Performance with
PerfView
》。PerfView能够收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这个程序通过调用哪个函数识别频率。除了配备程序品质数据(Perfmon、PAL和Xperf等工具不恐怕轻松做到),PerfView还是可以分析程序内存堆来救助分明内存的应用是或不是急忙。它还有3个Diff功效,能够让您显然跟踪间的人身自由差距来支援你认出全体逆行。最后,该工具还有三个Dump成效可以生成三个先后内存转储。

Roslyn的PM(程序老总) BillChiles,Roslyn使用纯托管代码开发,但质量当先以前使用C++编写的原生落成,这有何样窍门啊?他多年来写了一篇文章叫做《Essential
Performance Facts and .NET Framework
Tips
》里头推荐了壹本性能分析工具《Improving
Your App’s Performance with
PerfView
》。PerfView可以收集Windows事件跟踪(ETW)数据来追踪程序的调用流向,这一个程序通过调用哪个函数识别频率。除了配置程序品质数据(Perfmon、PAL和Xperf等工具无法轻轻松松做到),PerfView仍是可以分析程序内存堆来辅助分明内存的应用是不是迅速。它还有贰个Diff作用,可以让你显然跟踪间的即兴差距来接济你认出全数逆行。最后,该工具还有二个Dump成效可以生成三个先后内存转储。

下载代码示例

安装PerfView

安装PerfView

您编写2个托管应用程序来亲肉体会一下 – 您会觉得其速度较慢。
您的应用程序在效益上是不奇怪的,但其品质有广大不足。
您想诊断出质量难点并缓解这几个标题,但你的应用程序正在生产环境中运转,导致您不能安装探查器或中断它。
或然,您应用程序的应用范围或然不够广泛,无法验证购买 Visual Studio
探查器来展开 CPU 分析是客观的。

从微软下载的
PerfView
包蕴1个zip压缩文件,其中唯有多个可实施的文本perfview.exe,那简化了设置。你可以将以此文件复制到七个你想跟踪的服务器上,然后在那一个服务器或你本地的工作站中分析数据。PerfView在Windows
Vista、Windows 七 、Windows Server 2010、Windows Server 二〇一〇 LAND2和Windows
Server 二〇一二上都受到支撑,要求.NET FX 2.0以上。

从微软下载的
PerfView
蕴涵二个zip压缩文件,其中唯有3个可实施的文件perfview.exe,那简化了安装。你可以将以此文件复制到多个你想跟踪的服务器上,然后在这个服务器或你本地的工作站中分析数据。PerfView在Windows
Vista、Windows ⑦ 、Windows Server 二〇一〇、Windows Server 2010 Murano2和Windows
Server 2013上都遭逢支撑,需求.NET FX 2.0之上。

碰巧的是,Windows 事件跟踪 (ETW) 可以消除那个题材。
此强大的日志记录技术内置在 Windows 基础结构的多少个部分中,并且 Microsoft
.NET Framework 4 CL科雷傲 中动用此技术使分析你的托管应用程序变得尤为简明。
ETW
收集系统范围的数码并分析全体能源(CPU、磁盘、网络和内存),使其对拿到全部视图很有用。
其余,可对 ETW 生态系统进行调整以缩减其付出,使该系统适用于生产诊断。

征集配置数据

采访配置数据

本文目的在于使你精晓使用 ETW 分析托管应用程序的益处。 小编不会介绍全部内容 –
有多少个可用以诊断的 OS 事件和 CL奥迪Q5 ETW 事件在本文中不会提到。
但您将精晓哪些使用 ETW 生态系统大大进步托管应用程序的习性和功力。
为了开首向你介绍针对托管代码的根据 ETW 的确诊,小编将应用可从
bcl.codeplex.com/releases/view/49601
下载的免费 ETW 工具 (PerfMonitor) 来演示示例调查。

PerfView利用Windows事件追踪,而ETW从Windows 三千Server以来就直接内停放操作系统中。只是近来才有XPerf和PerfView一类的工具利用ETW数据来缓解质量难题。事件数量被采集到多个风波跟踪日志(ETL)中。依据你想要跟踪事件的数码和时间的尺寸,ETL文件或然会卓殊大。你可以限制那几个日志文件的大小,即使空间受限或许你不精通难点哪天发生的话,你还足以让它们循环。暗中同意每飞秒三回的采样间隔在搜集时间内发出了大概一成的CPU花费。提议大约四千个样本(5秒)用于一次代表性配置采样。

PerfView利用Windows事件追踪,而ETW从Windows 两千Server以来就平昔内停放操作系统中。只是近日才有XPerf和PerfView一类的工具利用ETW数据来缓解质量难题。事件数量被采访到三个事变跟踪日志(ETL)中。依据你想要跟踪事件的多少和岁月的尺寸,ETL文件只怕会很是大。你可以界定这些日志文件的深浅,若是空间受限或然您不晓得难点曾几何时发生的话,你还足以让它们循环。暗中同意每阿秒三次的采样间隔在征集时间内发出了大体上10%的CPU费用。提出几乎五千个样本(5秒)用于三次代表性配置采样。

PerfMonitor

使用 PerfMonitor,您可以方便快速地征集 ETW
品质数据并扭转有效报告。此工具不是为着替代深层分析工具(如 Visual Studio
探查器),而是为了向你提供应用程序品质特点的概述,并让您执行一些神速分析。

再有一种称作 XPerf 的 ETW 诊断工具,可透过 Windows
品质工具包免费获取此工具。 就算 XPerf 很符合用来在 Windows
上展开本机代码分析,但它尚不可以长远扶助托管代码分析。
另一方面,PerfMonitor 公开了动用 ETW 分析托管代码的限量和能力。
PerfMonitor 可以收集与 .NET Framework
运维时期码关联的标记新闻,从而使它对 .NET Framework
质量调查很有价值,固然它不援救 XPerf 可提供的深层分析。

PerfMonitor
是3个一心独立的工具,您只需利用它即可先河对托管应用程序进行剖析和确诊。
唯一的渴求是,您至少必须运维 Windows Vista 或 Windows Server 二零零六。
PerfMonitor 是一个命令行工具,从其岗位键入 PerfMonitor.exe usersGuide
将显得一个概述。
若是您想在操作环境下(如在生育服务器上)诊断您客户的次第,则您要求做的是将相应文件复制到该处理器上,并预备上马征集配置文件。
假若须要,可脱机分析配置文件。

在其他性质调查进程中,日常会检讨多个因素:CPU、磁盘
I/O、内存和可伸缩性。 半数以上调查都将从 CPU 初步,CPU
将震慑应用程序的运维和履行时间。 在确诊较长的启航时间时,检查磁盘 I/O
是最实用的(磁盘 I/O
是冷运转时间的重点因素,冷运维时间是指内存中没有有些应用程序时(如重启后)运维此应用程序所花的时日),而过多的内存消耗(或泄漏)可能会促成应用程序随时间的流逝变得更慢。
假若您愿意您的应用程序的吞吐量与拍卖器数成比例,则可伸缩性很要紧。

PerfMonitor
可协理您取得除可伸缩性以外的享有那一个要素的快照,并且可为您提供丰盛多的音信以便你使用此外标准工具举办更为的讨论。
例如,若要诊断与 CLXC60 .NET 垃圾收集 (GC) 堆相关的题材,使用 CL奥迪Q3Profiler
将是更好的挑三拣四。 不过,PerfMonitor
很快会告知您是或不是留存难题,以及你是或不是须要使用其余工具举行进一步的探索。
在一些情形下,PerfMonitor 自己会指出该难点,并蕴藏您化解质量 Bug
所需的享有新闻,很快将向你介绍那或多或少。 请查看“CLRubicon 周密透析”专栏“.NET
应用程序的内存使用量审核”(msdn.microsoft.com/magazine/dd882521),其中商量了甄别程序内存使用量并统筹性质的基本点。
将以此原理增加一下,您可使用 PerfMonitor
火速核对托管程序的八个地点的特性,而不光是内存。

起来一遍数据收集有二种方法,用运营命令运行1个顺序依旧用收集命令在微机范围内征集数据。这么些命令可以由采访下拉菜单下的GUI引发,恐怕从CLI或脚本中施行“PerfView
run”或“PerfView
collect”命令。下图浮现运转命令tutorial.exe时征集数据的过程,tutorial.exe是一个平放的教练演习。
ca88亚洲城网站 1

始发一回数据搜集有三种方式,用运转命令运转1个程序照旧用收集命令在电脑范围内募集数据。那一个命令可以由采访下拉菜单下的GUI引发,或者从CLI或脚本中实施“PerfView
run”或“PerfView
collect”命令。下图显示运转命令tutorial.exe时征集数据的进度,tutorial.exe是三个放权的训练演习。
ca88亚洲城网站 2

演示调查:CsvToXml

自身利用 ETW 诊断的以身作则程序可将1个 CSV 文件转换到2个 XML 文件。 可从
code.msdn.microsoft.com/mag201012ETW
拿到源代码和化解方案包(以及示例输入 CSV 文件 data.csv)。
若要实践顺序,请运维命令 CsvToXml.exe data.csv output.xml。

与不可枚举主次类似,CsvToXml 已神速连在一起,开发人员从未期望将它用来大型
CSV 文件。 当本人开首在切切实实世界中采用该程序时,作者意识它太慢了。 它处理贰个750K 的文书所花的时间甚至领先了 15 秒!
作者知道出现了难点,但不曾分析工具,笔者也只好估摸此情形是因为运转速度慢以致的。
(您能还是不能只看一下源代码就找出难点啊?)幸运地是,PerfMonitor
可以扶助你找出该难点。

查看结果

翻看结果

变化和查看程序跟踪

首先步是,通过在总指挥命令指示符窗口中执行以下命令来飞速核查应用程序(ETW
将采访计算机范围内的数目,由此要求管理权限):

PerfMonitor runAnalyze CsvToXml.exe data.csv out.xml

那将开首 ETW 日志记录、运维 CsvToXml.exe、等待 CsvToXml
已毕、为止日志记录,并最后彰显一个呈现对 CsvToXml 的解析消息的网页。
通过三个简便步骤,您便可见享有大批量多少,那么些多少可帮衬您揭破 CsvToXml
中的品质瓶颈。

图 1 中抓获了该命令的结果。 此页包蕴进程ID、使用的命令行和高级质量数据的细目(其中包蕴 CPU 总结消息、GC
计算信息和实时 (JIT) 计算音讯),以及别的数据。 PerfMonitor
还透过指向音讯性小说或任何工具的有用链接,来提供对开首诊断的地方的率先级分析。

ca88亚洲城网站 3.jpg)

图 1 针对 CsvToXml 的性质分析

此报告证实,格式转换所消费的时刻接近 14 秒,在平均利用率为 99% 的 CPU
中消费的日子为 13.6 秒。 因而,该方案与 CPU 品质联系紧密。

GC 中的时间总量和 GC 暂停时间量较少,这很好;但最大 GC 分配速率为
105.1MB/秒,这一个速率过快了 – 那亟需更为的调查。

万一你在些之间针对品质难题采访了数额,你可以用PerfView分析ETL文件。该ETL文件会师世在左侧的窗口,有收集日志或运营命令时期你提供的名字。通过双击该奥迪Q7TL文件,十来个独立的节点会和顶替它们内容的名字一同出现。例如,你会在下图中看到跟踪新闻、程序、事件、CPU堆栈。双击各种节点,适当的查阅器会打开那么些内容。

万一你在些之间针对质量难题采访了数量,你可以用PerfView分析ETL文件。该ETL文件会冒出在左手的窗口,有收集日志或运维命令时期你提供的名字。通过双击该宝马X3TL文件,十来个独立的节点会和替代它们内容的名字一同出现。例如,你会在下图中看出跟踪音讯、程序、事件、CPU堆栈。双击各种节点,适当的查看器会打开这么些内容。

CPU 分析

详细的 CPU 分析可提供 CPU 时间的细目,如图 2
所示,还足以经过三种艺术来读取 CPU 配置文件数量。
能够由此自下而上的视图飞快获知,哪些方法占用的 CPU
时间最多,应先对此进行诊断。
自上而下的视图可用来鲜明你的代码是索要系统布局改变依旧结构改变,并协助您了然程序的完全质量。
调用方-被调用方视图提示了逐条艺术之间的涉嫌 –
例如,调用方法与被调用方法之间的附和关系。

ca88亚洲城网站 4.jpg)

图 2 针对性 CsvToXml.exe 的自下而上的辨析

与其它 CPU 探查器类似,PerfMonitor
视图为您提供了蕴藏时间(特定措施应用的年华,包含其被调用方使用的年华)和清除时间(特定措施应用的年月,不包蕴其被调用方使用的岁月)。
当包蕴时间与解除时间等于时,将在一定措施内成功工作。 PerfMonitor
还提供了 CPU 利用率图,该图对一定措施随时间变化的 CPU 使用率进行了划分。
通过将鼠标指针悬停在告知中的列标题上方,可为您提供有关其含义的越多详细新闻。

一大半属性调查都将从自下而上的视图最先,该视图是3个按排除时间分开的法子列表(
2
中突显了该视图)。 通过采取自下而上的视图,您会看出 mscorlib 方法
System.IO.File.OpenText 是占有 CPU 最多的不二法门。 单击该链接将突显OpenText 方法的调用方/被调用方视图,该视图揭破了
CsvToXml.CsvFile.get_ColumnNames 方法正在从程序中调用 OpenText,而
get_ColumnNames 占用的 CPU 时间约为 10 秒(图 3)。
其它,将在一个循环内从 CsvToXml.CsvFile.XmlElementForRow
调用该办法(XmlElementForRow 自个儿调用自 Main 方法)。

ca88亚洲城网站 5.jpg)

图 3 get_ColumnNames 的调用方-被调用方视图

据此,某些故事情节在那一个办法中就像是大错特错的。
从那些点子中拉出代码会招致出现难点,如图 4
中崛起浮现的一对所示:此文件在多个循环内反复打开和剖析!

图 4 方法 ColumnNames 由方法 XmlElementForRow 调用

          public string[] ColumnNames{  get  {    using (var reader = File.OpenText(Filename))      return Parse(reader.ReadLine());  }} public string XmlElementForRow(string elementName, string[] row){  string ret = "<" + elementName;  for (int i = 0; i < row.Length; i++)    ret += " " + ToValidXmlName(ColumnNames[i]) + "=\"" + EscapeXml(row[i]) + "\"";  ret += "/>";  return ret;}        

恍如景况的爆发频率远远胜出你的想像。
在早期编写此措施时,开发人士大概以为此格局只会在极少数意况下被调用(与
ColumnNames 的动静一样),由此恐怕不会太多关心此措施的品质。
可是,将来日常会油然则生在循环中甘休调用此方法的情形,导致应用程序的个性下跌。

在 CSV 文件中,由于全部行的格式都同一,因此尚未必要每一遍都这么做。
您可以将 ColumnNames 功效提高至构造函数中(如图 5
所示),保留此属性以提供缓存列名。 那可确保只读取此文件两遍。

图 5 缓存列名以博得更好的品质

          public CsvFile(string csvFileName){  Filename = csvFileName;     using (var reader = File.OpenText(Filename))      ColumnNames = Parse(reader.ReadLine());        } public string Filename { get; private set; } public string[] ColumnNames { get; private set;}        

我们在再一次生成后重新实施了上一个发令,发现应用程序的快慢快多了;以往的持续时间仅为
2.5 秒。

但在使用修补程序审阅数据时,您会意识 CPU 时间仍占主导地位。
通过重新长远了然 CPU 时间并查阅自下而上的分析,您会意识 Regex.Replace
以后是支付最大的法门,并且此措施调用自 EscapeXml 和 ToValidXmlName。
由于 EscapeXml 是开发最大的艺术(排除时间为 330
飞秒),由此请检查其源代码:

          private static string EscapeXml(string str){  str = Regex.Replace(str, "\"", "&quote;");  str = Regex.Replace(str, "<", "&lt;");  str = Regex.Replace(str, ">", "&gt;");  str = Regex.Replace(str, "&", "&amp;");  return str;}        

出于还会在 XmlElementForRow 中的循环内调用
EscapeXml,因而此方法有可能会化为三个瓶颈。
正则表达式对那一个替换有点多余,而采纳字符串 Replace 方法应该会更赶快。 将
EscapeXml 替换为以下内容:

          private static string EscapeXml(string str){  str = str.Replace("\"", "&quote;");  str = str.Replace("<", "&lt;");  str = str.Replace(">", "&gt;");  str = str.Replace("&", "&amp;");  return str;}        

使用此转换后,时间总量已回落约 2 秒,且 CPU 时间仍占主导地位。
那是可接受的性质 – 您大致将推行进度加快了七倍。

为了有利于读者开展演习,作者已在示范程序中保留了多少个属性 Bug,可拔取 ETW
事件标识这么些 Bug。

ca88亚洲城网站 6

ca88亚洲城网站 7

探索 GC 总计音讯

PerfMonitor GC 计算音讯提供了内存配置文件的大致概述。
您或许记得,笔者强烈指出执行内存使用率审核,而透过 GC ETW
事件提供的音讯提供了有关 .NET GC 堆的此外难题的快照。
您可经过神速摘要视图获知 GC 聚合堆的深浅、分配速率和 GC 暂停时间。
通过在 PerfMonitor 结果选项卡上摘取“GC 时间分析”链接,可显示 GC
的详细新闻、GC 发生的小时、GC 占用的时间量等。

你可经过那几个新闻来鲜明是否必要使用 CL中华VProfiler
或其他内存探查器进一步分析任何内存难题。 “.NET 垃圾回收堆透析”一文
(msdn.microsoft.com/magazine/ee309515)
对利用 CL冠道Profiler 调试 .NET GC 堆进行了深刻的追究。

对于此特定程序而言,不设有其他令人不安的 GC 总结消息。
分配速率较高;一个实用的经验法则是让分配速率低于 10MB/s。
但暂停时间十分长。 高的分红速率出现在 CPU
时间上边,多数景况下那代表将获取 CPU 增益 – 那与您发现的情况相同。
但修复后的分红速率仍相比较高,那表示举行了汪洋分红(您能改良此难点呢?)。
几微秒的 GC 暂停时间是对 .NET Framework 运维时提供的自调节和快捷 GC
有力申明。 因而,.NET Framework GC 将电动负责内存管理。

为了针对一个一定程序分析盘算密集型品质难题,你将索要上学要调用的堆栈和函数。那可以通过双击左手窗口中的“CPU堆栈”节点已毕。接着你会拿到晋升来抉择你感兴趣的顺序。末了,该CPU堆栈查看器会在独立的窗口中打开,如下图QQ进度的音讯,你可以规定调用了哪个函数以及它们的作用。

为了针对2个一定程序分析盘算密集型品质难题,你将索要学习要调用的堆栈和函数。那可以透过双击左手窗口中的“CPU堆栈”节点完毕。接着你会赢得晋升来挑选你感兴趣的顺序。最终,该CPU堆栈查看器会在单身的窗口中开辟,如下图QQ进度的音讯,你可以规定调用了哪个函数以及它们的效用。

研商 JIT 总计消息

若要收缩运营时间,要探索的首先批项目中的一个类型是对艺术进行 JIT
编译所需的时光。
如果费用的年华很短(例如,运营应用程序所需的大部光阴都由 JIT
编译所占用),则应用程序可以从本机印象生成 (NGen)
中收益,它可经过对先后集举行预编译并将其保存到磁盘上来驱除 JIT
编译时间。 相当于说,对程序集举行 JIT
编译并将其保存到磁盘上,那样便不必对继续执行进行 JIT 编译。 在拔取采用NGen 在此之前,您或者还亟需考虑将要进行 JIT
编译的有个别措施推迟到程序中的某些时点执行,以便 JIT
编译时间不会潜移默化运维。 有关详细音信,请参阅“NGen 的属性优势”一文
(msdn.microsoft.com/magazine/cc163610)。

以身作则应用程序 CsvToXml.exe 的启航资金并不高,因而同意它每一趟对全数办法举办JIT 编译是实惠的。 JIT 编译计算音讯还指明,已拓展 JIT 编译的点子的多少为
17(提议调用的享有办法都已开展 JIT 编译),JIT 编译时间的总量为 23
阿秒。 那一个都不是与此应用程序相关的性格问题,但对于受 JIT
编译时间影响的巨型应用程序,使用 NGen 应会化解任何难题。
常常,当应用程序开首对大宗或数以千计的法子举办 JIT 编译时,JIT
编译时间就会变成影响因素。 在此类景况下,NGen 是扫除 JIT
编译费用的消除方案。

MSDN 杂志 中的其余文章中富含了关于改革运维的越多率领消息,而 ETW
事件可支持标识和解决瓶颈。 还提供了别的多少个 JIT 事件(包涵 JIT
内联事件),它们能提供对章程不可以内联的缘由的铁画银钩解析。

ca88亚洲城网站 8

ca88亚洲城网站 9

.NET Framework 4 中的 CLR ETW 事件

CL冠道 团队撰文了一篇关于跟踪 DLL 加载并分明运转时期是还是不是要求加载特定 DLL
的博客文章。 通过行使 ETW 事件,可使显然是否需求在开行时期开展 DLL
加载的进程变得尤其简便易行。 通过应用 .NET Framework 4 中提供的 ETW
模块加载事件,大家可了然加载了何等模块以及加载原因。
还有一些针对性模块卸载等情景的事件。

.NET Framework 4
中还提供了多少个事件,利用那几个事件可更自在地诊断托管应用程序。 图 6
计算了这几个事件。 可接纳 PerfMonitor runPrint
命令对实施期直接触的拥有事件进展转储。 CLSportage 团队还会运作允许你连接和分手
ETW 分析的事件,并且该团队打算继续丰裕愈多的 ETW
事件,以使调试托管应用程序的进程在前天版本中变得越发简约。

图 6 .NET Framework 4 中的 ETW 事件

事件种类称号
说明

运作时音讯 ETW 事件
抓获有关运营时的音信,包涵SKU、版本号、激活运转时的方法、运维运转时所接纳的命令行参数、GUID(若是适用)以及其余连锁新闻。

十一分引发 ETW 事件
抓获有关引发的要命的音信。

争用 ETW 事件
破获有关对运作时拔取的监控视器锁或本机锁的争用景况的新闻。

线程池 ETW 事件
破获有关工作线程池和 I/O 线程池的新闻。

加载程序 ETW 事件
抓获有关加载和卸载应用程序域、程序集和模块的音讯。

方法 ETW 事件
破获有关用于符号解析的 CL帕杰罗 方法的音信。

GC ETW 事件
抓获有关 GC 的新闻。

JIT 跟踪 ETW 事件
抓获有关 JIT 内联和尾调用的音信。

互操作 ETW 事件
破获有关 Microsoft 中间语言 (MSIL) 存根生成和缓存的音信。

使用程序域能源监察 (AKoleosM) ETW 事件
抓获有关应用程序域的状态的详细诊断音信。

安全性 ETW 事件
破获有关强名称和 Authenticode 验证的音信。

堆栈 ETW 事件
破获可用来其他事件以在引发轩然大波后转变堆栈跟踪的新闻。

你会发觉实施目录中有多少个后缀为 PerfMonitorOutput 的文件;那三个公文是
ETW 日志文件。 您还会发现后缀为 kernel 的文本,那代表它们含有 OS 事件。
PerfMonitor 收集的多寡与 XPerf 使用的数据一致,因而你可以利用
PerfMonitor 来简化数据搜集,并简化报告和 XPerf
以便对同样数量进行更尖端的辨析。 PerfMonitor 合并命令会将 ETW 文件转换为
XPerf 的可读格式。

借使您细心翻看上边的事例,你会发觉第贰行显示<<user32!?>>。“!?”代表PerfView不能够分析这一个模块名称。你可以双击那个未知模块名称并采纳“查找符号”来体现该模块名称。按用户指南所述配置符号路径对于解析操作系统函数名称只怕是有必不可少的。

假定你精心查看上面的例证,你会意识第壹行展现<<user32!?>>。“!?”代表PerfView不或然分析那么些模块名称。你可以双击那么些未知模块名称并采取“查找符号”来显示该模块名称。按用户指南所述配置符号路径对于解析操作系统函数名称恐怕是有要求的。

总结

ca88亚洲城网站,选用 ETW 举行品质调查不仅不难而且很实惠。 提供了二种免费的、低费用的基于
ETW 的工具,那么些工具允许有效调剂托管代码。 我正好介绍的只是 .NET
Framework 运维时中提供的 ETW 事件的肤浅。 笔者的目的是,让您初阶利用 ETW
事件和工具调试托管应用程序。 通过下载 PerfMonitor、使用 CLGL450 中的 ETW
事件的 MSDN 文档并阅读 CL路虎极光 Perf
博客,您可以高速起先对托管应用程序举办质量调查。

特别谢谢 CLHaval Performance 的合营伙伴架构师 Vance Morrison提供的指引以及为创作本文提供的帮带。

Subramanian Ramaswamy 是 Microsoft 的 CL宝马7系 Performance 程序高管。
他有着 南达科他工业学院的电子与电脑工程硕士学位。

原文 http://msdn.microsoft.com/zh-cn/magazine/gg490356.aspx

PerfView是壹个有利于用户的工具,能够用来收集和分析ETW数据用于化解配置程序品质数据的标题。那么些工具得以高速地出示为这些程序执行的操作系统函数,明白质量难点大概藏匿的岗位。

PerfView是三个便民用户的工具,可以用来搜集和分析ETW数据用于缓解配置程序质量数据的题材。那个工具得以很快地显示为这么些程序执行的操作系统函数,掌握品质难点或者暗藏的地点。

相关文章