如何从外部代码

时间:2017-08-28 13:54:48

标签: c# benchmarking benchmarkdotnet

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

因为它可能像在方法中添加Benchmark属性一样简单,但我对在我工作的项目中使用它有很大疑问。

该项目由两部分组成:

  • native core
  • .Net功能

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

您可以在我们的official docs

中详细了解设置和清理

答案 1 :(得分:0)

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

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