BenchmarkDotNet,跳过特定运行时的基准测试
BenchmarkDotNet, skip a benchmark on specific runtime
(https://benchmarkdotnet.org/)
是否可以跳过特定运行时的单个基准测试部分?
例如我想测试 4.7.2 和 Core 3.1 的几个功能,
但只能在 Core31
上使用
[Benchmark]
public void CoreOnly()
{
#if NETCOREAPP3_1
//some stuff i only want to test with 3.1
#endif
}
[Benchmark]
public void General()
{
//some stuff i want to test on all runtimes
}
到目前为止我就是这样做的。
有没有更好的方法?
这在设计上是不可能的。
当运行主机进程以XYZ框架为目标时,BDN正在使用反射来获取可用方法(基准)的列表。如果您使用 #if
定义,则基准列表将因主机进程目标框架而异。
性能回购文档描述了如何在此处比较多个运行时性能:
https://github.com/dotnet/performance/blob/master/docs/benchmarkdotnet.md#multiple-runtimes
The host process needs to be the lowest common API denominator of the runtimes you want to compare!
您可以在此处阅读有关测试多个运行时的更多信息:
https://benchmarkdotnet.org/articles/configs/toolchains.html#multiple-frameworks-support
(https://benchmarkdotnet.org/)
是否可以跳过特定运行时的单个基准测试部分?
例如我想测试 4.7.2 和 Core 3.1 的几个功能, 但只能在 Core31
上使用[Benchmark]
public void CoreOnly()
{
#if NETCOREAPP3_1
//some stuff i only want to test with 3.1
#endif
}
[Benchmark]
public void General()
{
//some stuff i want to test on all runtimes
}
到目前为止我就是这样做的。 有没有更好的方法?
这在设计上是不可能的。
当运行主机进程以XYZ框架为目标时,BDN正在使用反射来获取可用方法(基准)的列表。如果您使用 #if
定义,则基准列表将因主机进程目标框架而异。
性能回购文档描述了如何在此处比较多个运行时性能: https://github.com/dotnet/performance/blob/master/docs/benchmarkdotnet.md#multiple-runtimes
The host process needs to be the lowest common API denominator of the runtimes you want to compare!
您可以在此处阅读有关测试多个运行时的更多信息: https://benchmarkdotnet.org/articles/configs/toolchains.html#multiple-frameworks-support