我正在寻找与您描述的非常相似的东西。我找不到这样的框架,所以我推出了自己的框架。我应该注意,这很简单,但有时简单就是好的!
我将其描述为基准测试符合单元测试。这个概念是为了测量或比较速度而隔离代码部分。
属性使用的典型示例如下所示:
[ProfileClass]
public class ForEachLoopBenchmarks
{
[ProfileMethod]
public void ForLoopBenchmark()
{
List<int> list = GetNumberList();
for (int i = 0; i < list.Count; i++)
{
}
}
[ProfileMethod]
public void ForEachLoopBenchmark()
{
List<int> list = GetNumberList();
foreach (int i in list)
{
}
}
private List<int> GetNumberList()
{
List<int> list = new List<int>();
for (int i = 0; i < 1000; i++)
{
list.Add(i);
}
return list;
}
}
然后,您创建一个控制台应用程序并将以下代码粘贴到Main方法中,并添加对包含前面描述的用属性修饰的类的程序集的引用。然后将每个方法的执行时间(运行 1000 次)输出到控制台。
class Program
{
static void Main(string[] args)
{
ProfileRunner rp = new ProfileRunner();
rp.Run();
}
}
控制台输出如下所示:

您需要将pUnit.dll的引用添加到控制台应用程序和包含用属性标记的方法的类库。
您可以在此处从Nuget 获取此软件包。
Nuget 命令: PM> Install-Package pUnit
如果你想要完整的源代码,你可以在Github上 找到它。
我基于这个问题的实际测量执行时间的方法:https ://stackoverflow.com/a/1048708/1139752
我在下面的博客文章中更详细地介绍了实现。