【问题标题】:Compare scaling with BenchmarkDotNet将扩展与 BenchmarkDotNet 进行比较
【发布时间】:2019-08-01 07:35:36
【问题描述】:

我有一个需要迭代集合的方法(准确地说是 DataRowCollection)。

当前的实现有点慢,所以我一直在尝试更快的实现。我使用 BenchmarkDotNet 来比较相同参数的执行时间,如果集合足够大,它明显更快。

我的怀疑是,如果集合相对较小,情况就不会如此。因此,我真的很想比较两者的规模:在 1、10、100、1,000、10,000 个元素时哪个更快?

据我所知,BenchmarkDotNet 没有内置功能。我想要传递给它一个对集合的引用,并让它执行具有不同大小或切片的方法。 (例如通过将其复制到不同大小的 IList 中。)

基本上,以http://ridiculousfish.com/blog/posts/array.html 之类的图表结束

【问题讨论】:

  • 抱歉,请问具体是什么问题?
  • BenchmarkDotNet 是否提供这样的机制,还是我需要为每个集合大小的每组方法编写一份副本?

标签: c# benchmarkdotnet


【解决方案1】:
[Params(1, 10, 100, 1000, 10000)]
public int Size { get; set; }

然后在您的测试中使用Size。它应该自动输出等。您还可以在任何预测试 [GlobalSetup] 方法中使用参数化值,例如预初始化列表/数组,使其不计入基准测试。

【讨论】:

  • ……我现在觉得很傻。是的,这可能就是我所需要的。谢谢!
  • 有道理。所以我可能会在我初始化集合的[GlobalSetup] 方法中打开Size。不错。
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 2015-05-31
  • 2013-05-04
  • 2021-04-24
  • 2019-11-28
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多