专栏首页7DGroup性能工具之DOTNET性能分析工具

性能工具之DOTNET性能分析工具

努力的小伙又有新文章了。

整理自己很重要,慢慢的知识就成体系了。

1. 内存性能分析

内存性能测试软件主要的功能就是记录下一段时间内的内存使用情况,并向用户提供一些查看分析内存使用的辅助功能。相关软件有以下几种:

  • dotTrace Memory:JetBrains公司产品,收费。
  • .Net Memory Profiler:SciTech公司产品,收费
  • ANTS Memory Profiler:RedGate公司产品,收费 1.1. 内存收集方式:
  • 做一个标记,然后操作软件,完成操作后,生成快照(软件中称内存使用情况为“快照”)。dotTraceMemory使用这种方式,快照为一个时间段的内存使用情况,其实也就是记录了起始两个时间点的内存使用情况。 优点:操作方便。如果知道某种软件操作有内存泄露,有目的性的查看内存使用,使用这种方式最快捷。 缺点:软件没有实时显示内存的使用情况,生成的快照代表一个时间段,所以也不能够记录对象实例的值。
  • 每一个时间点都可以生成一个快照,分析时是对比两个快照来看内存的变化情况。除dotTrancMemory之外,都是使用这种方式来生成快照的。 优点:提供了实时显示内存使用情况的波形图。操作完成后想马上看内存的变化,这个功能还是很方便的。生成的快照,保存了对象实例的值。 缺点:操作相比第一种,步骤要多一些。

具体操作

dotTrace Memory

1. 启动程序后会弹出下面一个窗口,点击“Mark Memory”后,程序就开始记录内存信息了。

2. 点击”Mark Memory”,窗口变成了下面的内容,点击“Get Snapshot”,就会记录下软件这段时间内的内存情况。

3. 下面就是生成的快照文件视图。

ANTS Memory Profiler

1. 软件启动并设置好要测试的应用程序后,界面是下面的样子。中上部分是实时显示内存情况的波形图。点击右上方的“TakeMemory Snapshot”按钮就可以生成一个时间点的快照。

2. 生成快照后,后生成以下图片中的情况,一个内存变化的大纲图。Baseline表示基准快照,Current为当前快照,大纲图为当前快照与基准快照的对比图。两个快照都可以使用下拉菜单来选择。第一次基准快照为空。然后就可已经对内存进行分析了。

.Net Memory Profiler

1. 软件启动并设置好要测试的应用程序后,界面是下面的样子。他主体部分包含很多标签页,下面是“Real-Time”实时标签页,用来展现内存的实时情况。点击右侧的“Collectsnapshot”会生成当前时间点的内存快照。

2. 下面是“OverView”标签页用来表示内存变化一个整体情况。ShowSnapshot用来表示当前内存快照,ComparisionSnapshot用来表示基准快照。同样两个都是可以选择的,基准快照第一次也为空。其他的标签页用来以不同的方式查看内存。

1.2. 快照查看功能

udotTraceMemory

dotTrace Meory查看内存非常方便,软件也设计了很多图标,使类,对象,方法等信息一目了然。

左侧栏很方便用户从类、命名空间、对象、引用关系、线程角度来查看内存情况。

1左侧栏

中间部分很明显的显示了内存的包含情况,使用图标显示了很丰富的信息,比如图中:对象,数组,列,对象实例在托管堆中代数。

工具栏中设置了从存在的,已经回收,已经标记为垃圾对象,非托管对象等不同角度来查看内存。还查询功能,能快速查询到特定类或特性方法的内存情况。

软件下方能够显示代码情况。

通过邮件操作,可以打开一个新的标签页查看特定类或对象实例的内存情况。这个功能还很有用的,因为性能的异常主要是某个类出现的问题。

uANTSMemory Profiler

ANTS Memory Profiler界面显示它性能分析的基本步骤,基本是从左向右一步一步进行的。

在生成快照后先从”Summay”查看一个整体的内存情况,中间还包含一个”MemoryFragmentation“内存碎片来提示可能包含的内存问题。

如果存在问题,就可以进入”ClassList“视图,查看一下那些类内存突然增加或减少,通过排序很容易找到。

然后应该是查看一下增加或减少了那些对象实例,”InstanceCategorizer”用流程图的方式来表示实例及引用关系,”InstanceList”用列表的形式表示不同的实例。这里也可以方便的查询出对象实例的值。

2 Instance Categorizer

3 Instance List”

下面ANTSMemory Profiler提供了查看一个对象实例引用关系的一张图。这张图可以使我们可以定位到出现内存问题的具体位置。不过层级关系太多,看起来可能会比较乱。

除此之外,ANTSMemory Profiler还有个Walkthrough用来帮助用户使用软件,使软件入门很方便(英语不好的话,这个就没用了)。

u.NetMemory Profiler

.Net Memory Profiler提供的功能最丰富。他主要通过不同的标签页来以不同的角度来查看内存情况。

“OverView”视图代表整体的内存情况,可以查看各个类的内存变化,同时有方便的查询方式。ShowType可以选择查看不同类型的内存,比如新增\减少的内存,非托管内存等几种。Showhierarchical可以选择从程序集的层级关系查看类的内存情况。Fiter还对一些典型的内存种类做了统计。

4”OverView”

“Type Detail”视图列出来某一类的对象实例使用情况。可以在“OverView”视图中双击某个类打开“TypeDetail”视图。鼠标指向对象实例,还可以显示属性值和调用堆栈。下面也提供了引用关系和调用堆栈的标签页。右侧用图的方式显示的与其他类的调用关系。双击对象实例对会弹出一个“InstanceDetail”视图来具体显示对象实例的内存情况,也包含引用关系,调用对象信息。

5”Type Detail”

6Instance Detail

“Call stack/Method”调用堆栈/方法视图,可以从堆栈或方法查看具体执行过程产生的内存情况。如果就是测试某个方法产生的内存,这个无疑是最方便的。

“Native Memory”视图提供了非托管内存的变化情况。

7 Native Memory

另外对可能是内存泄露的地方,软件用相应的提示信息。

总结

dotTrace Memory

不足:没有实时查看内存的功能。不能查看快照实例对象的值。优点:查看快照的功能比另外两种都方便快捷,用户体验好。

ANTS Memory Profiler

不足:没有堆栈\方法视图,这是硬伤。实时显示图占据很大面积,查看快照的面积相对较小。优点:相比.Net Memory Profiler界面风格较好,上手容易

.Net Memory Profiler

除界面外没有明显不足,功能强大。比其他两种要多花点时间熟悉。

2. CPU性能测试

Cpu性能测试包括的概念比较多,不过在代码级别上,我们需要得到是在一段时间内方法执行的次数和时间。这里对一下两个个软件进行了对比:

  • dotTrace Performance:Jet Brains公司,收费
  • ANTS Performance Profiler:RedGate公司,收费
  • dotTracePerformance

dotTrace Performance和dotTrace Memory的操作类似,设置好要测试的程序,启动后在执行操作做做一个标记,完成操作后获取快照,快照就记录下了操作过程中方法使用的CPU时间和调用次数等信息。

8添加标记

9获取快照

查看快照的功能,也与dotTraceMemory类型。

左侧列出了不同的查看方式:大纲图,线程树,调用堆栈树,方法列表,热点图。

10线程视图

11"PlainView"方法列表视图

总的来说,dotTracePerformance使用起来非常简单。

uANTSPerformance Profiler

ANTS Performance Profiler与ANTS Memory Profiler是同一家公司的产品,风格上也保持了一致。中上部为CPU的实时使用状态,通过鼠标拉动一个区域来测试该时间段内的CPU使用情况。方法的使用情况在中下部分的表格中显示。

Show下拉列表可以通过不同的方式查看CPU使用情况

出了Cpu的使用情况外,ANTSPerformance Profiler还可以显示数据库调用,和FileIO的信息。

u总结

两个软件的差别并不是特别大,查找cpu异常的地方ANTSPerformance Profiler可能更好一些;针对某个软件操作,查看cpu使用情况,dotTracePerformance可能更方便。

本文分享自微信公众号 - 7DGroup(Zee_7DGroup),作者:7DGroup-左泽位

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 性能工具之nGrinder分布式简单环境搭建介绍

    高楼Zee
  • 使用 kubeadm 安装单 master kubernetes 集群

    对于 Kubernetes 初学者,在搭建 K8S 集群时,推荐在阿里云或腾讯云采购如下配置:(也可以使用自己的虚拟机、私有云等最容易获得的 Linux 环境)

    高楼Zee
  • 搭建 Kubernetes 集群 Dashboard 2.0+ 可视化插件

    Kubernetes 还开发了一个基于 Web 的 Dashboard,用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、...

    高楼Zee
  • 推荐系统之用户行为分析

    用户行为介绍 基于用户行为的推荐,在学术界名为协同过滤算法。 协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感...

    Spark学习技巧
  • 推荐系统之用户行为分析

    基于用户行为的推荐,在学术界名为协同过滤算法。 协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而...

    zhuanxu
  • 如何为Tensorflow构建自定义数据集

    Tensorflow激发开发人员在几乎任何想到的领域中尝试他们令人兴奋的AI创意。ML社区中有三个众所周知的因素构成了一个好的深度神经网络模型做了一些神奇的事情...

    代码医生工作室
  • Hmily:高性能异步分布式事务TCC框架

    Hmily框架特性[https://github.com/yu199195/hmily]

    芋道源码
  • 以太坊geth同步自动关闭问题分析

    问题场景 在启动以太坊geth同步数据的过程中会出现这样的问题,就是节点同步正常,日志没有报异常信息或者报出一些底层的类异常信息,随后geth节点进程自动关闭。...

    用户1161110
  • 从理论到实践,一文详解 AI 推荐系统的三大算法

    介绍 背景 随着互联网行业的井喷式发展,获取信息的方式越来越多,人们从主动获取信息逐渐变成了被动接受信息,信息量也在以几何倍数式爆发增长。举一个例子,PC时...

    AI研习社
  • JSON WEB TOKEN (JWT)

    JSON WEB TOKEN简称为JWT,是一个基于JSON的开放标准,用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范,经常用于身份验证。

    WindrunnerMax

扫码关注云+社区

领取腾讯云代金券