问题标签 [benchmarkdotnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
26 浏览

benchmarkdotnet - 在哪里可以找到 benchmarkdotnet 输出的文档

在 BenchmarkDotNet 的输出中,我有以下几行:

对于第一个基准

对于第二个基准

GC 和 Threading 中的值是什么意思?

0 投票
0 回答
39 浏览

c# - 如何使用 BenchmarkDotNet 运行基准测试,而无需每次运行都构建

我定义了基准

在程序 Main 我通过运行基准测试

每次我运行程序时,它都会重新构建自己(我对使用各种运行时运行的超酷功能不感兴趣)。在我只想使用已经运行当前基准程序的运行时运行基准的简单情况下,如何避免这些构建?

0 投票
1 回答
20 浏览

benchmarkdotnet - 更改 BenchmarkDotnet 导出器路径

文档说“默认情况下”出口商将在.\BenchmarkDotNet.Artifacts\results路径中创建一个报告。

有没有办法覆盖这条路径?

0 投票
1 回答
22 浏览

benchmarkdotnet - 使用 BenchmarkDotNet 在基准之间保留数据

我正在尝试对两个数据库(不同类型,不同位置)进行基准测试。
我的选择基准运行良好,但我在插入、更新和删除时遇到问题。

我尝试将GUID用于插入的键( 我不想在我的插入基准中的插入语句或我的删除基准中的插入语句之后调用删除语句,因为这样时间结果就会关闭。Queue<string>

如何处理这种情况?
我想在其中创建一个 GUID 列表,[GlobalSetup]但是当我更改迭代次数时,我需要增加或减少这个列表。

任何建议将不胜感激。

0 投票
1 回答
194 浏览

c# - 如何测量 BenchmarkDotNet 上的 CPU 使用率?

我正在使用 DotNet Benchmark,我可以获得下表中的内存使用信息。但是我需要访问我完成的过程中有多少CPU 使用率。DotNetBenchmark 有这个功能吗?如果不是,我应该使用什么方法?

方法 意思是 错误 标准差 0代 第一代 第 2 代 已分配
获取 10000 条记录 38.70 毫秒 1.413 毫秒 4.165 毫秒 2000.0000 1000.0000 - 12 MB
获取 100000 条记录 558.30 毫秒 11.157 毫秒 22.024 毫秒 19000.0000 6000.0000 2000.0000 121 MB
0 投票
1 回答
31 浏览

hostname - 如何向 BenchmarkDotNet 摘要添加额外信息?

如何添加额外信息以扩展 BenchmarkDotNet 生成的摘要信息
喜欢:

  • 当前主机名或
  • 当前 (Git) 分支名称

我想实现类似于这个例子的东西:

0 投票
1 回答
445 浏览

c# - DotNetBenchmark 引发参考汇编错误

我想使用 BenchmarkDotnet 测试一些方法的性能。因此,我下载了 NuGet 包,添加了 usings 并像这样实现它:

BenchmarkRunner 位于应显示输出的控制台应用程序中。不幸的是,我不断收到此错误:MSB3971:找不到“.NETFramework,Version=v6.0”的参考程序集。您可能正在使用较旧的 .NET SDK 来定位 .NET 5.0 或更高版本

我不知道这个错误来自哪里,因为我以前从来没有遇到过组件引用的问题,并且所有东西都应该正确安装。至少我不知道有什么问题。有谁知道如何解决这个问题。我在 VS 2022 中运行程序,TargetFramework 是 .Net 6.0

dotnet sdk 文件夹

Microsoft.NET 文件夹

0 投票
2 回答
158 浏览

c# - 是否可以使用 #if NET6_0_OR_GREATER 从 BenchmarkDotNet 运行中排除基准方法?

假设您正在编写一些与 BenchmarkDotNet 一起使用的基准测试,这些基准测试是多目标的net48net6.0,并且其中一个基准测试只能针对net6.0目标编译。

显而易见的事情是使用这样的东西从net48构建中排除特定的基准:

不幸的是,这不起作用,并且它不起作用的方式取决于TargetFrameworks项目文件中属性中指定的目标的顺序。

如果您订购框架,那么net6.0首先<TargetFrameworks>net6.0;net48</TargetFrameworks>(在上面的示例中)该UsingSpan()方法包含在两个目标中,导致net48目标和输出的 BenchmarkDotNet 构建错误,如下所示:

另一方面,如果您对框架进行排序,那么net48首先<TargetFrameworks>net48;net6.0</TargetFrameworks>(在上面的示例中)该UsingSpan()方法被排除在两个目标中,结果输出如下:

我必须通过单一目标项目和编辑项目文件以分别针对框架来解决这个问题,然后为每个目标分别运行基准测试。

有没有办法让它与多目标项目一起工作?


为了完整起见,这里有一个完整的可编译测试应用程序来演示该问题。我正在使用 Visual Studio 2022。

项目文件:

“Program.cs”文件:

0 投票
1 回答
20 浏览

benchmarkdotnet - 我应该创建单独的基准项目吗?

我想使用 BenchmarkDotNet 库在我的控制台应用程序中测量某些方法的性能。

问题是:我应该在我的解决方案中创建一个单独的项目,在其中复制我感兴趣的测量方法并在那里进行测量,还是应该将测量所需的所有属性添加到现有项目中?

这里的约定是什么?

0 投票
1 回答
43 浏览

c# - BenchmarkDotNet 多次运行相同的基准

面对我当前的基准测试配置无法正常工作的问题,原因是我正在尝试仅运行基准测试,因为正如文档中提到的那样,我必须使用此属性[SimpleJob(RunStrategy.ColdStart, targetCount: 1)],这是让我走错了方向,因为从控制台我注意到我的单人板凳被建立了两次。

我在这里缺少什么?