是否有.net c#分析器可以为泛型方法的不同类型执行报告单独的统计信息?
本文关键字:执行 同类型 报告单 信息 统计 泛型方法 net 分析器 是否 | 更新日期: 2023-09-27 18:08:23
假设我有一个简单的程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProfilerTesting
{
class Program
{
static void MyFunc<T>(T t)
{
System.Threading.Thread.Sleep(100);
Console.WriteLine(t);
}
static void Main(string[] args)
{
IList<string> l = new List<string> { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m" };
foreach (string s in l)
{
MyFunc(s);
}
IList<int> g = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int i in g)
{
MyFunc(i);
}
}
}
}
当我在采样模式下使用。net分析器分析这个程序时(我已经尝试了EQUATEC分析器免费版本和Visual Studio性能工具),它只给我MyFunc<T>
的总执行统计数据。是否有任何方法可以获得MyFunc<string>
和MyFunc<int>
的单独执行统计数据?
我不知道有什么工具可以做到这一点,而且我实际上不认为这是可能的。
如果你看一下方法的泛型定义,你会发现
泛型方法定义是具有两个参数列表的方法:泛型类型参数列表和形式参数列表。类型参数可以显示为返回类型,也可以显示为形式参数的类型,如下面的代码所示。
我们可以将你的问题改写为"是否有可能通过不同的参数值来区分调用堆栈函数?"答案是否定的。当然,这在某种程度上是可能的,但没有人会实现这一点,因为数据量非常大,分析这些数据真的很难。
在调用堆栈中,当我们有MyFunc
时,我们总是只能发现这是MyFunc<T>(T t)
,没有任何关于参数(类型或形式)的信息。
对于您的情况,如果您想单独测量性能,最好将此方法分为两个。