我有一个针对net35、net40、net45和netstandard2.0的项目。(https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-20)。我想对我瞄准的每个dotnet版本进行基准测试,以确保我为较早版本的.Net中缺失的特性创建的多填充功能与点网功能相比执行得很好。例如,net35在System.Collections.Concurrent命名空间中没有任何类型。是否有可能使用BenchmarkDotNet进行这种类型的基准测试,如果是的话,如何进行呢?
new CachingActivatorFactory(
#if NET35
new ReaderWriterCache<ConstructorInfo, Func<object[], object>>(),
#else
new ConcurrentCache<ConstructorInfo, Func<object[],object>>(),
#endif
new LambdaExpressionActivatorFactory(
#if NET45 || NETSTANDARD
new IlEmitCompiler()
#else
new SystemExpressionCompiler()
#endif
)
)发布于 2019-04-28 16:32:59
好吧,考虑到基准点网的每个版本所支持的内容,您将被限制在这一点上。
当前版本的0.11.5支持.net标准2.0,这将支持.net .net> 2.0和.net框架> 4.6.1,因此这些将是您可以测试的目标。
因此,例如,有了它,我可以将基准测试项目定位到net461和netcoreapp2.2。您还将.net标准包括在您的列表中,您不能针对这个目标,尽管这不是一个运行时。无论如何,您必须将项目目标设置为:
<TargetFrameworks>netcoreapp2.2;net461;</TargetFrameworks>然后用以下内容装饰您的测试课程:
[CoreJob, ClrJob]然而,有一项工作是被限制在基准点网络库支持的常见问题中。
Q My源代码的目标是.NET框架或.NET Core的旧版本,但BenchmarkDotNet需要net461和netcoreapp2.0。在这种情况下,我如何运行基准测试? A引入额外的控制台应用程序(例如MyAwesomeLibrary.Benchmarks)是一个很好的实践,它将取决于您的代码和BenchmarkDotNet。由于用户通常在开发环境中运行基准,并且不为用户分发基准,所以这不应该是一个问题。
https://stackoverflow.com/questions/51449166
复制相似问题