连接.NET方法以进行分析

本文关键字:NET 方法 连接 | 更新日期: 2023-09-27 17:58:23

可能重复:
在C#中分析一个方法以了解运行需要多长时间

我需要检查运行一个方法需要多长时间。

例如,我需要知道在我的项目中,在using System.Reflection中运行GetTypes()方法需要多长时间。

foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}

最简单的方法可能是运行profiler或插入Stopwatch所有使用GetTypes()的源文件,但我希望我可以在运行GetTypes)方法之前和之后使用挂钩GetType()方法来启动和退出秒表。

sw = Stopwatch.StartNew();
foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}
sw.Stop();

我可以用C#/.NET(Mono)来做这件事吗?如果没有,除了修改源代码或运行探查器之外,我还有其他选择吗?

连接.NET方法以进行分析

使用您的示例:

sw = Stopwatch.StartNew();
foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}
sw.Stop();

你测量的远不止GetTypes,你测量的还有Console.WriteLine和其他一切。

编写挂钩(如Moles)可能会对性能产生太大影响(但我必须承认,我以前从未做过这样的事情,但在运行带有Moles的单元测试时,我确实注意到了性能的差异)。

最简单(也是最便宜)的选择是下载其中一个(免费)评测器:

AQTime(免费版)http://smartbear.com/products/free-tools/aqtime-standard/

SharpDevelop(有一个探查器):http://www.icsharpcode.net/opensource/sd/download/

XTE档案器http://www.xteprofiler.com

其中任何一个都会为您提供详细信息。但是,如果你真的想自己做,请下载SharpDevelop的源代码,并尝试弄清楚他们是如何制作探查器的。