问题标签 [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.
benchmarkdotnet - 为什么在尝试打开 ConcurrencyVisualizerProfiler 数据时收到“收集无法继续,因为内核事件丢失”消息?
在尝试使用 BenchmarkDotNet 库 (v0.11.5) 分析简单 .NET Core (v3.0) 方法的性能时,使用ConcurrencyVisualizerProfiler
放在正在测量的方法/类上的属性,我收到了一个 CvTrace 文件,因为基准。
当我尝试使用 Visual Studio 2017 和Concurrency Visualizer for Visual Studio 2017
插件打开它时,我收到一条消息:
由于内核事件丢失,收集无法继续。
我应该怎么做才能获得数据可视化?
c# - 为什么我的 MemoryManager 和我的 MemoryPool 实现这么慢?
为了学习的目的,我尝试实现一个 MemoryManager 和一个 MemoryPool 并尝试它如何与标准实现竞争。但尤其是我的 MemoryManager 太慢了。有人可以指出我这里发生的事情,顺便说一句有什么问题吗?
我的记忆池:
我的内存管理器:
基准:
结果:
c# - BenchmarkDotNet - 如何在类之外注入参数
我正在使用BenchmarkDotNet库进行性能检查,并且我想在使用基准类时注入参数。像这样的东西:
有没有办法实现它?
我知道我可以使用Params
,ParamsSource
和ArgumentsSource
属性,但这意味着我需要为每个参数更改更改基准类,而不是注入不同的参数。
我的主要目标是编写一次基准类并使用不同的参数多次使用它。
c# - 什么可以解释在这种情况下使用 const 的开销?
我在这里撞墙,所以我希望你们中的一些人能够教育我。我正在使用 BenchmarkDotNet 进行一些性能基准测试,我遇到了一个奇怪的情况,似乎声明一个成员const
会大大降低性能。
请注意,这两种测试方法之间的唯一区别是它们是与常规成员变量还是 const 成员进行比较。
根据 BenchmarkDotNet 的说法,使用 const 值要慢得多,我不明白为什么。
据我所知,查看 JIT 编译的代码并不能解释它。这是这两种方法的代码。唯一的区别是比较是针对寄存器还是文字进行。
和
我确定我忽略了一些东西,但我现在无法理解它,所以我正在寻找可以解释这一点的输入。
c# - 我们如何在 C# 中为 BenchmarkDotNet 的 [Arguments] 标签传递动态参数?
我正在尝试用参数对方法进行基准测试。
在使用 [Benchmark] 注释执行代码时,我收到一个错误,因为“基准方法 ViewPlan 的签名不正确。方法不应该有任何参数”。所以我也尝试在方法中添加 [Arguments] 注释。参考链接:https ://benchmarkdotnet.org/articles/samples/IntroArguments.html
在这个 [Arguments] 中,我们还需要指定方法的参数值。但是,当调用该功能时,x 的值是动态设置的。有没有办法在 [Arguments] 中动态传递参数值?我们也可以对静态方法进行基准测试吗?如果可以,那么如何?
benchmarkdotnet - 如何在 BenchmarkDotNet 中对同一非 NuGet 库的两个不同版本进行基准测试?
我正在尝试使用 BenchmarkDotNet 为库准备性能回归测试。这要求我将相同的测试与旧(稳定)版本的库进行比较。现在,可以选择将不同版本的 NuGet 包提供给作业。似乎没有一个选项可以引用不同的程序集。
我尝试过自定义构建配置:
但是当尝试通过 BenchmarkDotNet 使用这些配置时
我收到构建错误,表明该程序集根本没有被引用。BenchmarkDotNet 还有助于清除它创建的任何临时工件,因此我什至无法查看生成的项目文件来弄清楚它的外观。
这里唯一的解决方法是将库包装在 NuGet 包中吗?还是我在(对于这种情况下看似稀疏的)文档中忽略了一些东西?
这个问题似乎与我得到的构建错误模糊相关。
c# - 运行 BenchmarkDotNet 时出现“错误的程序集绑定重定向”
在我的项目中为某个方法运行 BenchmarkDotNet 时,我收到一些“错误的程序集绑定重定向”警告/错误消息打印到屏幕上。这让我有点困惑,因为我认为程序集绑定重定向是一个 .Net Framework 概念,而我的项目是 .Net Core 3.0。谷歌搜索警告/错误消息没有结果。有关这些消息含义的任何提示,以及可能如何解决问题。我尝试清理 Nuget 缓存、恢复 Nuget 包、清理和重建解决方案,但没有任何帮助。
benchmarkdotnet - 如何测量字符串实习?
我正在尝试衡量字符串实习在应用程序中的影响。
我想出了这个:
但我总是得到相同数量的分配。
是否有任何其他措施或诊断可以让我节省使用 string.Intern() 的内存?
c# - BenchmarkDotNet,跳过特定运行时的基准
( https://benchmarkdotnet.org/ )
是否可以跳过特定运行时的单个基准测试部分?
例如,我想测试 4.7.2 和 Core 3.1 的几个功能,但一个只能在 Core31 上进行测试
这就是我到目前为止所做的。有没有更好的办法?