在我的初始化方法中,我调用其他一些方法,操纵一些变量并迭代一些列表。现在我注意到加载方法需要一点点时间(大约2分钟)。
但问题是,我不太确定该方法的哪一部分耗费了这么长时间。所以我想测量一下,这样我就可以开发出最有可能缩短时间的部分。
但衡量这一点的好方法是什么?
答案 0 :(得分:10)
如果您不想使用Ants performance profiler等分析器,可以使用Stopwatch
来衡量运行某些代码的时间。
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
// Code to time
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
这当然会改变您的代码,并要求您在要衡量的每个点上进行这些修改。
我建议去那里有很多好的个人资料中的一个(我肯定其他答案会指出一些好的)。
答案 1 :(得分:7)
答案 2 :(得分:2)
我不太清楚哪一部分 方法耗费了这么多时间。所以 我想测量它
需要更长时间的事情是very easy to find。
例如,如果它比它应该花费的时间长10倍,那意味着90%的时间它正在做不需要的事情。因此,如果您在IDE下运行它并暂停它,那么您在该行为中捕获它的几率为90%。 只需查看调用堆栈,因为您知道问题就在它的某个地方。 如果您不确定是否已经抓住它,请多试几次。问题将出现在多个样本上。
我在.net app startup中找到的典型事项:
你发现的内容可能会有所不同,但你会发现它。
这是一种低技术但有效的方法。无论是在CPU中还是在I / O中花费时间,它都可以工作。它没有非常精确地测量问题,但确实非常精确地定位了它。 (查看this post的最后一段。)