我打算使用BenchmarkDotNet来测试各种项目中的一些方法。
由于它可能像将Benchmark
属性添加到方法中一样简单,因此我对在我从事的项目中使用它表示怀疑。
该项目由两部分组成:
- 原生核心
- .Net 功能
本机部分初始化 .Net 部分,并通过互操作调用其方法。
因此,使用测试项目并添加对 .Net 项目的引用并启动基准测试应用程序将不起作用,因为应首先启动本机代码。
任何想法,如果我能以某种方式跳过本机部分并使BenchmarkDotNet仅测试方法?还是我应该寻找另一种基准测试方法?
- 创建一个新的公共类
- 创建基准方法,调用要测量的事物。用
[Benchmark]
属性标记它。
如果运行一次初始化代码就足够了(对于许多基准测试迭代):
- 创建一个新方法,实现初始化并用
[GlobalSetup]
属性标记它 - BenchmarkDotNet 将创建类的新实例,调用设置方法一次,然后开始对代码进行基准测试。
如果运行一次初始化是不够的,并且需要在基准测试方法调用之前每次调用它:
- 创建一个新方法,实现初始化并使用
[IterationSetup]
属性对其进行标记。将运行策略设置为RunStrategy.Monitoring
。 - BenchmarkDotNet 将创建类的新实例,在调用基准测试之前调用一次设置方法并重复多次。
您可以在我们的官方文档中阅读有关设置和清理的更多信息
查看 BenchmarkDotNet 的规范,似乎您可以将任何方法标记为基准,它不一定是本机应用程序调用的实际方法。 与单元测试类似,可以编写基准测试,以使用有效参数调用 .NET 代码中的方法,否则这些参数将来自本机核心。
我建议创建一个单独的基准测试项目,类似于您拥有一个单独的测试项目。