一:背景
1. 讲故事
在 dump 分析旅程中,经常会遇到很多朋友反馈一类问题,比如:
- 方法平时都执行的特别快,但有时候会特别慢,怎么排查?
- 我的方法第一次执行特别慢,能看到慢在哪里吗?
相信有朋友肯定说,加些日志不就好了,大方向肯定是没问题的,但加日志的颗粒度会比较粗而且侵入性也比较大,比如说这个方法不是你的,或者说这个方法是操作系统的,一般情况下对他们无法干涉,那如何洞察在你作用域之外的方法性能呢?作为 CLR团队首推的 PerfView 性能分析工具,必须要 KO 这些问题,接下来我们就简单聊一聊。
二:PerfView 洞察慢速方法
1. 测试代码
为了方便讲述,我们模拟这样的一种情况,一个方法第一次执行会特别慢(5s),后面执行都很快(3s),测试代码如下:
internal class Program
{
static void Main(string[] args)
{
mytest1(5000);