如何对从外部代码开始的 .Net 类进行基准测试



我打算使用BenchmarkDotNet来测试各种项目中的一些方法。

由于它可能像将Benchmark属性添加到方法中一样简单,因此我对在我从事的项目中使用它表示怀疑。

该项目由两部分组成:

  • 原生核心
  • .Net 功能

本机部分初始化 .Net 部分,并通过互操作调用其方法。

因此,使用测试项目并添加对 .Net 项目的引用并启动基准测试应用程序将不起作用,因为应首先启动本机代码。

任何想法,如果我能以某种方式跳过本机部分并使BenchmarkDotNet仅测试方法?还是我应该寻找另一种基准测试方法?

  • 创建一个新的公共类
  • 创建基准方法,调用要测量的事物。用[Benchmark]属性标记它。

如果运行一次初始化代码就足够了(对于许多基准测试迭代):

  • 创建一个新方法,实现初始化并用[GlobalSetup]属性标记它
  • BenchmarkDotNet 将创建类的新实例,调用设置方法一次,然后开始对代码进行基准测试。

如果运行一次初始化是不够的,并且需要在基准测试方法调用之前每次调用它:

  • 创建一个新方法,实现初始化并使用[IterationSetup]属性对其进行标记。将运行策略设置为RunStrategy.Monitoring
  • BenchmarkDotNet 将创建类的新实例,在调用基准测试之前调用一次设置方法并重复多次。

您可以在我们的官方文档中阅读有关设置和清理的更多信息

查看 BenchmarkDotNet 的规范,似乎您可以将任何方法标记为基准,它不一定是本机应用程序调用的实际方法。 与单元测试类似,可以编写基准测试,以使用有效参数调用 .NET 代码中的方法,否则这些参数将来自本机核心。

我建议创建一个单独的基准测试项目,类似于您拥有一个单独的测试项目。

相关内容

  • 没有找到相关文章

最新更新