1

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

因为它可能就像向Benchmark方法中添加属性一样简单,所以我对在我从事的项目中使用它有很大的疑问。

该项目由两部分组成:

  • 本机核心
  • .Net 功能

本机部分初始化 .Net 部分并通过 interop调用其方法。

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

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

4

2 回答 2

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

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

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

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

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

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

于 2017-08-29T09:20:05.483 回答
0

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

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

于 2017-08-28T14:24:20.553 回答